@discordjs/core 3.0.0-pr-10758.1765463096-d081e1706 → 3.0.0-pr-11005.1765538001-01ed3c43b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/api/applicationCommands.ts","../src/api/applications.ts","../src/api/channel.ts","../src/api/gateway.ts","../src/api/guild.ts","../src/api/interactions.ts","../src/api/invite.ts","../src/api/monetization.ts","../src/api/oauth2.ts","../src/api/poll.ts","../src/api/roleConnections.ts","../src/api/soundboardSounds.ts","../src/api/stageInstances.ts","../src/api/sticker.ts","../src/api/thread.ts","../src/api/user.ts","../src/api/voice.ts","../src/api/webhook.ts","../src/api/index.ts","../src/client.ts","../src/util/files.ts"],"sourcesContent":["export * from './api/index.js';\nexport * from './client.js';\nexport type * from './Gateway.js';\nexport * from './util/index.js';\n\nexport * from 'discord-api-types/v10';\n\nexport { GatewayRateLimitError } from '@discordjs/util';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/core#readme | @discordjs/core} version\n * that you are currently using.\n */\n// This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild\nexport const version = '3.0.0-pr-10758.1765463096-d081e1706' as string;\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIApplicationCommandPermissionsResult,\n\ttype RESTGetAPIApplicationCommandResult,\n\ttype RESTGetAPIApplicationCommandsQuery,\n\ttype RESTGetAPIApplicationCommandsResult,\n\ttype RESTGetAPIApplicationGuildCommandResult,\n\ttype RESTGetAPIApplicationGuildCommandsQuery,\n\ttype RESTGetAPIApplicationGuildCommandsResult,\n\ttype RESTGetAPIGuildApplicationCommandsPermissionsResult,\n\ttype RESTPatchAPIApplicationCommandJSONBody,\n\ttype RESTPatchAPIApplicationCommandResult,\n\ttype RESTPatchAPIApplicationGuildCommandJSONBody,\n\ttype RESTPatchAPIApplicationGuildCommandResult,\n\ttype RESTPostAPIApplicationCommandsJSONBody,\n\ttype RESTPostAPIApplicationCommandsResult,\n\ttype RESTPostAPIApplicationGuildCommandsJSONBody,\n\ttype RESTPostAPIApplicationGuildCommandsResult,\n\ttype RESTPutAPIApplicationCommandPermissionsJSONBody,\n\ttype RESTPutAPIApplicationCommandPermissionsResult,\n\ttype RESTPutAPIApplicationCommandsJSONBody,\n\ttype RESTPutAPIApplicationCommandsResult,\n\ttype RESTPutAPIApplicationGuildCommandsJSONBody,\n\ttype RESTPutAPIApplicationGuildCommandsResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class ApplicationCommandsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches all global commands for a application\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands}\n\t * @param applicationId - The application id to fetch commands for\n\t * @param query - The query options for fetching commands\n\t * @param options - The options for fetching commands\n\t */\n\tpublic async getGlobalCommands(\n\t\tapplicationId: Snowflake,\n\t\tquery: RESTGetAPIApplicationCommandsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationCommands(applicationId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationCommandsResult>;\n\t}\n\n\t/**\n\t * Creates a new global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#create-global-application-command}\n\t * @param applicationId - The application id to create the command for\n\t * @param body - The data for creating the command\n\t * @param options - The options for creating the command\n\t */\n\tpublic async createGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPostAPIApplicationCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.applicationCommands(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIApplicationCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches a global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-global-application-command}\n\t * @param applicationId - The application id to fetch the command from\n\t * @param commandId - The command id to fetch\n\t * @param options - The options for fetching the command\n\t */\n\tpublic async getGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationCommand(applicationId, commandId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationCommandResult>;\n\t}\n\n\t/**\n\t * Edits a global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param commandId - The id of the command to edit\n\t * @param body - The data for editing the command\n\t * @param options - The options for editing the command\n\t */\n\tpublic async editGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\tbody: RESTPatchAPIApplicationCommandJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.applicationCommand(applicationId, commandId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIApplicationCommandResult>;\n\t}\n\n\t/**\n\t * Deletes a global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param commandId - The id of the command to delete\n\t * @param options - The options for deleting a command\n\t */\n\tpublic async deleteGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.applicationCommand(applicationId, commandId), { auth, signal });\n\t}\n\n\t/**\n\t * Overwrites global commands\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands}\n\t * @param applicationId - The application id to overwrite commands for\n\t * @param body - The data for overwriting commands\n\t * @param options - The options for overwriting commands\n\t */\n\tpublic async bulkOverwriteGlobalCommands(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPutAPIApplicationCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationCommands(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches all commands for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands}\n\t * @param applicationId - The application id to fetch commands for\n\t * @param guildId - The guild id to fetch commands for\n\t * @param query - The data for fetching commands\n\t * @param options - The options for fetching commands\n\t */\n\tpublic async getGuildCommands(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIApplicationGuildCommandsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationGuildCommands(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationGuildCommandsResult>;\n\t}\n\n\t/**\n\t * Creates a new command for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command}\n\t * @param applicationId - The application id to create the command for\n\t * @param guildId - The guild id to create the command for\n\t * @param body - The data for creating the command\n\t * @param options - The options for creating the command\n\t */\n\tpublic async createGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIApplicationGuildCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.applicationGuildCommands(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIApplicationGuildCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command}\n\t * @param applicationId - The application id to fetch the command from\n\t * @param guildId - The guild id to fetch the command from\n\t * @param commandId - The command id to fetch\n\t * @param options - The options for fetching the command\n\t */\n\tpublic async getGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationGuildCommand(applicationId, guildId, commandId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationGuildCommandResult>;\n\t}\n\n\t/**\n\t * Edits a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param guildId - The guild id of the command\n\t * @param commandId - The command id to edit\n\t * @param body - The data for editing the command\n\t * @param options - The options for editing the command\n\t */\n\tpublic async editGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\tbody: RESTPatchAPIApplicationGuildCommandJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.applicationGuildCommand(applicationId, guildId, commandId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIApplicationGuildCommandResult>;\n\t}\n\n\t/**\n\t * Deletes a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param guildId - The guild id of the command\n\t * @param commandId - The id of the command to delete\n\t * @param options - The options for deleting the command\n\t */\n\tpublic async deleteGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.applicationGuildCommand(applicationId, guildId, commandId), { auth, signal });\n\t}\n\n\t/**\n\t * Bulk overwrites guild commands\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands}\n\t * @param applicationId - The application id to overwrite commands for\n\t * @param guildId - The guild id to overwrite commands for\n\t * @param body - The data for overwriting commands\n\t * @param options - The options for overwriting the commands\n\t */\n\tpublic async bulkOverwriteGuildCommands(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tbody: RESTPutAPIApplicationGuildCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationGuildCommands(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationGuildCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches the permissions for a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command-permissions}\n\t * @param applicationId - The application id to get the permissions for\n\t * @param guildId - The guild id of the command\n\t * @param commandId - The command id to get the permissions for\n\t * @param options - The option for fetching the command\n\t */\n\tpublic async getGuildCommandPermissions(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationCommandPermissions(applicationId, guildId, commandId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationCommandPermissionsResult>;\n\t}\n\n\t/**\n\t * Fetches all permissions for all commands in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions}\n\t * @param applicationId - The application id to get the permissions for\n\t * @param guildId - The guild id to get the permissions for\n\t * @param options - The options for fetching permissions\n\t */\n\tpublic async getGuildCommandsPermissions(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildApplicationCommandsPermissions(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildApplicationCommandsPermissionsResult>;\n\t}\n\n\t/**\n\t * Edits the permissions for a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions}\n\t * @param userToken - The token of the user to edit permissions on behalf of\n\t * @param applicationId - The application id to edit the permissions for\n\t * @param guildId - The guild id to edit the permissions for\n\t * @param commandId - The id of the command to edit the permissions for\n\t * @param body - The data for editing the permissions\n\t * @param options - The options for editing the permissions\n\t */\n\tpublic async editGuildCommandPermissions(\n\t\tuserToken: string,\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\tbody: RESTPutAPIApplicationCommandPermissionsJSONBody,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationCommandPermissions(applicationId, guildId, commandId), {\n\t\t\theaders: { Authorization: `Bearer ${userToken.replace('Bearer ', '')}` },\n\t\t\tauth: false,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationCommandPermissionsResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIApplicationEmojiResult,\n\ttype RESTGetAPIApplicationEmojisResult,\n\ttype RESTGetCurrentApplicationResult,\n\ttype RESTPatchAPIApplicationEmojiJSONBody,\n\ttype RESTPatchAPIApplicationEmojiResult,\n\ttype RESTPatchCurrentApplicationJSONBody,\n\ttype RESTPatchCurrentApplicationResult,\n\ttype RESTPostAPIApplicationEmojiJSONBody,\n\ttype RESTPostAPIApplicationEmojiResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class ApplicationsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches the application associated with the requesting bot user.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application#get-current-application}\n\t * @param options - The options for fetching the application\n\t */\n\tpublic async getCurrent({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.currentApplication(), { auth, signal }) as Promise<RESTGetCurrentApplicationResult>;\n\t}\n\n\t/**\n\t * Edits properties of the application associated with the requesting bot user.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application#edit-current-application}\n\t * @param body - The new application data\n\t * @param options - The options for editing the application\n\t */\n\tpublic async editCurrent(\n\t\tbody: RESTPatchCurrentApplicationJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.currentApplication(), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchCurrentApplicationResult>;\n\t}\n\n\t/**\n\t * Fetches all emojis of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#list-application-emojis}\n\t * @param applicationId - The id of the application to fetch the emojis of\n\t * @param options - The options for fetching the emojis\n\t */\n\tpublic async getEmojis(applicationId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.applicationEmojis(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationEmojisResult>;\n\t}\n\n\t/**\n\t * Fetches an emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#get-application-emoji}\n\t * @param applicationId - The id of the application to fetch the emoji of\n\t * @param emojiId - The id of the emoji to fetch\n\t * @param options - The options for fetching the emoji\n\t */\n\tpublic async getEmoji(\n\t\tapplicationId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationEmoji(applicationId, emojiId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationEmojiResult>;\n\t}\n\n\t/**\n\t * Creates a new emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#create-application-emoji}\n\t * @param applicationId - The id of the application to create the emoji of\n\t * @param body - The data for creating the emoji\n\t * @param options - The options for creating the emoji\n\t */\n\tpublic async createEmoji(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPostAPIApplicationEmojiJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.applicationEmojis(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIApplicationEmojiResult>;\n\t}\n\n\t/**\n\t * Edits an emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#modify-application-emoji}\n\t * @param applicationId - The id of the application to edit the emoji of\n\t * @param emojiId - The id of the emoji to edit\n\t * @param body - The data for editing the emoji\n\t * @param options - The options for editing the emoji\n\t */\n\tpublic async editEmoji(\n\t\tapplicationId: Snowflake,\n\t\temojiId: Snowflake,\n\t\tbody: RESTPatchAPIApplicationEmojiJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.applicationEmoji(applicationId, emojiId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIApplicationEmojiResult>;\n\t}\n\n\t/**\n\t * Deletes an emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#delete-application-emoji}\n\t * @param applicationId - The id of the application to delete the emoji of\n\t * @param emojiId - The id of the emoji to delete\n\t * @param options - The options for deleting the emoji\n\t */\n\tpublic async deleteEmoji(\n\t\tapplicationId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.applicationEmoji(applicationId, emojiId), { auth, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RawFile, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTDeleteAPIChannelResult,\n\ttype RESTGetAPIChannelInvitesResult,\n\ttype RESTGetAPIChannelMessageReactionUsersQuery,\n\ttype RESTGetAPIChannelMessageReactionUsersResult,\n\ttype RESTGetAPIChannelMessageResult,\n\ttype RESTGetAPIChannelMessagesPinsQuery,\n\ttype RESTGetAPIChannelMessagesPinsResult,\n\ttype RESTGetAPIChannelMessagesQuery,\n\ttype RESTGetAPIChannelMessagesResult,\n\ttype RESTGetAPIChannelResult,\n\ttype RESTGetAPIChannelThreadsArchivedQuery,\n\ttype RESTGetAPIChannelUsersThreadsArchivedResult,\n\ttype RESTGetAPIChannelWebhooksResult,\n\ttype RESTPatchAPIChannelJSONBody,\n\ttype RESTPatchAPIChannelMessageJSONBody,\n\ttype RESTPatchAPIChannelMessageResult,\n\ttype RESTPatchAPIChannelResult,\n\ttype RESTPostAPIChannelFollowersResult,\n\ttype RESTPostAPIChannelInviteJSONBody,\n\ttype RESTPostAPIChannelInviteResult,\n\ttype RESTPostAPIChannelMessageCrosspostResult,\n\ttype RESTPostAPIChannelMessageJSONBody,\n\ttype RESTPostAPIChannelMessageResult,\n\ttype RESTPostAPIChannelThreadsJSONBody,\n\ttype RESTPostAPIChannelThreadsResult,\n\ttype RESTPostAPIChannelWebhookJSONBody,\n\ttype RESTPostAPIChannelWebhookResult,\n\ttype RESTPostAPIGuildForumThreadsJSONBody,\n\ttype RESTPostAPISendSoundboardSoundResult,\n\ttype RESTPostAPISoundboardSendSoundJSONBody,\n\ttype RESTPutAPIChannelPermissionJSONBody,\n\ttype RESTPutAPIChannelRecipientJSONBody,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport interface StartForumThreadOptions extends RESTPostAPIGuildForumThreadsJSONBody {\n\tmessage: RESTPostAPIGuildForumThreadsJSONBody['message'] & { files?: RawFile[] };\n}\n\nexport interface CreateMessageOptions extends RESTPostAPIChannelMessageJSONBody {\n\tfiles?: RawFile[];\n}\n\nexport interface EditMessageOptions extends RESTPatchAPIChannelMessageJSONBody {\n\tfiles?: RawFile[];\n}\n\nexport class ChannelsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Sends a message in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#create-message}\n\t * @param channelId - The id of the channel to send the message in\n\t * @param body - The data for sending the message\n\t * @param options - The options for sending the message\n\t */\n\tpublic async createMessage(\n\t\tchannelId: Snowflake,\n\t\t{ files, ...body }: CreateMessageOptions,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelMessages(channelId), {\n\t\t\tauth,\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelMessageResult>;\n\t}\n\n\t/**\n\t * Edits a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#edit-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to edit\n\t * @param body - The data for editing the message\n\t * @param options - The options for editing the message\n\t */\n\tpublic async editMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ files, ...body }: EditMessageOptions,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.channelMessage(channelId, messageId), {\n\t\t\tauth,\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIChannelMessageResult>;\n\t}\n\n\t/**\n\t * Fetches the reactions for a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-reactions}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to get the reactions for\n\t * @param emoji - The emoji to get the reactions for. URL encoding happens internally\n\t * @param query - The query options for fetching the reactions\n\t * @param options - The options for fetching the message reactions\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.getMessageReactions('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.getMessageReactions('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async getMessageReactions(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\tquery: RESTGetAPIChannelMessageReactionUsersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessageReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessageReactionUsersResult>;\n\t}\n\n\t/**\n\t * Deletes a reaction for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-own-reaction}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reaction for\n\t * @param emoji - The emoji to delete the reaction for. URL encoding happens internally\n\t * @param options - The options for deleting the reaction\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.deleteOwnMessageReaction('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.deleteOwnMessageReaction('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async deleteOwnMessageReaction(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageOwnReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Deletes a reaction for a user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-user-reaction}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reaction for\n\t * @param emoji - The emoji to delete the reaction for. URL encoding happens internally\n\t * @param userId - The id of the user to delete the reaction for\n\t * @param options - The options for deleting the reaction\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.deleteUserMessageReaction('1234567890', '1234567890', '👍', '1234567890');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.deleteUserMessageReaction('1234567890', '1234567890', 'emoji_name:1234567890', '1234567890');\n\t * ```\n\t */\n\tpublic async deleteUserMessageReaction(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageUserReaction(channelId, messageId, encodeURIComponent(emoji), userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Deletes all reactions for a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-all-reactions}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reactions for\n\t * @param options - The options for deleting the reactions\n\t */\n\tpublic async deleteAllMessageReactions(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageAllReactions(channelId, messageId), { auth, signal });\n\t}\n\n\t/**\n\t * Deletes all reactions of an emoji for a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-all-reactions-for-emoji}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reactions for\n\t * @param emoji - The emoji to delete the reactions for. URL encoding happens internally\n\t * @param options - The options for deleting the reactions\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.deleteAllMessageReactionsForEmoji('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.deleteAllMessageReactionsForEmoji('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async deleteAllMessageReactionsForEmoji(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Adds a reaction to a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#create-reaction}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to add the reaction to\n\t * @param emoji - The emoji to add the reaction with. URL encoding happens internally\n\t * @param options - The options for adding the reaction\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.addMessageReaction('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.addMessageReaction('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async addMessageReaction(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelMessageOwnReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetches a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-channel}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for fetching the channel\n\t */\n\tpublic async get(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.channel(channelId), { auth, signal }) as Promise<RESTGetAPIChannelResult>;\n\t}\n\n\t/**\n\t * Edits a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#modify-channel}\n\t * @param channelId - The id of the channel to edit\n\t * @param body - The new channel data\n\t * @param options - The options for editing the channel\n\t */\n\tpublic async edit(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPatchAPIChannelJSONBody,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.channel(channelId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIChannelResult>;\n\t}\n\n\t/**\n\t * Deletes a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#deleteclose-channel}\n\t * @param channelId - The id of the channel to delete\n\t * @param options - The options for deleting the channel\n\t */\n\tpublic async delete(\n\t\tchannelId: Snowflake,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.delete(Routes.channel(channelId), { auth, signal, reason }) as Promise<RESTDeleteAPIChannelResult>;\n\t}\n\n\t/**\n\t * Fetches the messages of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-channel-messages}\n\t * @param channelId - The id of the channel to fetch messages from\n\t * @param query - The query options for fetching messages\n\t * @param options - The options for fetching the messages\n\t */\n\tpublic async getMessages(\n\t\tchannelId: Snowflake,\n\t\tquery: RESTGetAPIChannelMessagesQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessages(channelId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessagesResult>;\n\t}\n\n\t/**\n\t * Shows a typing indicator in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#trigger-typing-indicator}\n\t * @param channelId - The id of the channel to show the typing indicator in\n\t * @param options - The options for showing the typing indicator\n\t */\n\tpublic async showTyping(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.post(Routes.channelTyping(channelId), { auth, signal });\n\t}\n\n\t/**\n\t * Fetches pinned messages of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-channel-pins}\n\t * @param channelId - The id of the channel to fetch pinned messages from\n\t * @param query - The query options for fetching pinned messages\n\t * @param options - The options for fetching pinned messages\n\t */\n\tpublic async getPins(\n\t\tchannelId: Snowflake,\n\t\tquery: RESTGetAPIChannelMessagesPinsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessagesPins(channelId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessagesPinsResult>;\n\t}\n\n\t/**\n\t * Pins a message in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#pin-message}\n\t * @param channelId - The id of the channel to pin the message in\n\t * @param messageId - The id of the message to pin\n\t * @param options - The options for pinning the message\n\t */\n\tpublic async pinMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelMessagesPin(channelId, messageId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Deletes a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete\n\t * @param options - The options for deleting the message\n\t */\n\tpublic async deleteMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessage(channelId, messageId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Bulk deletes messages\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#bulk-delete-messages}\n\t * @param channelId - The id of the channel the messages are in\n\t * @param messageIds - The ids of the messages to delete\n\t * @param options - The options for deleting the messages\n\t */\n\tpublic async bulkDeleteMessages(\n\t\tchannelId: Snowflake,\n\t\tmessageIds: Snowflake[],\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t): Promise<void> {\n\t\tawait this.rest.post(Routes.channelBulkDelete(channelId), { auth, reason, body: { messages: messageIds }, signal });\n\t}\n\n\t/**\n\t * Fetches a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-channel-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to fetch\n\t * @param options - The options for fetching the message\n\t */\n\tpublic async getMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessage(channelId, messageId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessageResult>;\n\t}\n\n\t/**\n\t * Crossposts a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#crosspost-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to crosspost\n\t * @param options - The options for crossposting the message\n\t */\n\tpublic async crosspostMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelMessageCrosspost(channelId, messageId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelMessageCrosspostResult>;\n\t}\n\n\t/**\n\t * Unpins a message in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#unpin-message}\n\t * @param channelId - The id of the channel to unpin the message in\n\t * @param messageId - The id of the message to unpin\n\t * @param options - The options for unpinning the message\n\t */\n\tpublic async unpinMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessagesPin(channelId, messageId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Follows an announcement channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#follow-announcement-channel}\n\t * @param channelId - The id of the announcement channel to follow\n\t * @param webhookChannelId - The id of the webhook channel to follow the announcements in\n\t * @param options - The options for following the announcement channel\n\t */\n\tpublic async followAnnouncements(\n\t\tchannelId: Snowflake,\n\t\twebhookChannelId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelFollowers(channelId), {\n\t\t\tauth,\n\t\t\tbody: { webhook_channel_id: webhookChannelId },\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelFollowersResult>;\n\t}\n\n\t/**\n\t * Creates a new invite for a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#create-channel-invite}\n\t * @param channelId - The id of the channel to create an invite for\n\t * @param body - The data for creating the invite\n\t * @param options - The options for creating the invite\n\t */\n\tpublic async createInvite(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPIChannelInviteJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelInvites(channelId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelInviteResult>;\n\t}\n\n\t/**\n\t * Fetches the invites of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-channel-invites}\n\t * @param channelId - The id of the channel to fetch invites from\n\t * @param options - The options for fetching the invites\n\t */\n\tpublic async getInvites(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.channelInvites(channelId), { auth, signal }) as Promise<RESTGetAPIChannelInvitesResult>;\n\t}\n\n\t/**\n\t * Creates a new thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#start-thread-from-message}\n\t * @see {@link https://discord.com/developers/docs/resources/channel#start-thread-without-message}\n\t * @param channelId - The id of the channel to start the thread in\n\t * @param body - The data for starting the thread\n\t * @param messageId - The id of the message to start the thread from\n\t * @param options - The options for starting the thread\n\t */\n\tpublic async createThread(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPIChannelThreadsJSONBody,\n\t\tmessageId?: Snowflake,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.threads(channelId, messageId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\treason,\n\t\t}) as Promise<RESTPostAPIChannelThreadsResult>;\n\t}\n\n\t/**\n\t * Creates a new forum post\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#start-thread-in-forum-or-media-channel}\n\t * @param channelId - The id of the forum channel to start the thread in\n\t * @param body - The data for starting the thread\n\t * @param options - The options for starting the thread\n\t */\n\tpublic async createForumThread(\n\t\tchannelId: Snowflake,\n\t\t{ message, ...optionsBody }: StartForumThreadOptions,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tconst { files, ...messageBody } = message;\n\n\t\tconst body = {\n\t\t\t...optionsBody,\n\t\t\tmessage: messageBody,\n\t\t};\n\n\t\treturn this.rest.post(Routes.threads(channelId), {\n\t\t\tauth,\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelThreadsResult>;\n\t}\n\n\t/**\n\t * Fetches the archived threads of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-public-archived-threads}\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-private-archived-threads}\n\t * @param channelId - The id of the channel to fetch archived threads from\n\t * @param archivedStatus - The archived status of the threads to fetch\n\t * @param query - The options for fetching archived threads\n\t * @param options - The options for fetching archived threads\n\t */\n\tpublic async getArchivedThreads(\n\t\tchannelId: Snowflake,\n\t\tarchivedStatus: 'private' | 'public',\n\t\tquery: RESTGetAPIChannelThreadsArchivedQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelThreads(channelId, archivedStatus), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelUsersThreadsArchivedResult>;\n\t}\n\n\t/**\n\t * Fetches the private joined archived threads of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads}\n\t * @param channelId - The id of the channel to fetch joined archived threads from\n\t * @param query - The options for fetching joined archived threads\n\t * @param options - The options for fetching joined archived threads\n\t */\n\tpublic async getJoinedPrivateArchivedThreads(\n\t\tchannelId: Snowflake,\n\t\tquery: RESTGetAPIChannelThreadsArchivedQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelJoinedArchivedThreads(channelId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelUsersThreadsArchivedResult>;\n\t}\n\n\t/**\n\t * Creates a new webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#create-webhook}\n\t * @param channelId - The id of the channel to create the webhook in\n\t * @param body - The data for creating the webhook\n\t * @param options - The options for creating the webhook\n\t */\n\tpublic async createWebhook(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPIChannelWebhookJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelWebhooks(channelId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelWebhookResult>;\n\t}\n\n\t/**\n\t * Fetches the webhooks of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-channel-webhooks}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for fetching the webhooks\n\t */\n\tpublic async getWebhooks(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.channelWebhooks(channelId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelWebhooksResult>;\n\t}\n\n\t/**\n\t * Edits the permission overwrite for a user or role in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#edit-channel-permissions}\n\t * @param channelId - The id of the channel to edit the permission overwrite in\n\t * @param overwriteId - The id of the user or role to edit the permission overwrite for\n\t * @param body - The data for editing the permission overwrite\n\t * @param options - The options for editing the permission overwrite\n\t */\n\tpublic async editPermissionOverwrite(\n\t\tchannelId: Snowflake,\n\t\toverwriteId: Snowflake,\n\t\tbody: RESTPutAPIChannelPermissionJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelPermission(channelId, overwriteId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Deletes the permission overwrite for a user or role in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#delete-channel-permission}\n\t * @param channelId - The id of the channel to delete the permission overwrite in\n\t * @param overwriteId - The id of the user or role to delete the permission overwrite for\n\t * @param options - The options for deleting the permission overwrite\n\t */\n\tpublic async deletePermissionOverwrite(\n\t\tchannelId: Snowflake,\n\t\toverwriteId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelPermission(channelId, overwriteId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Sends a soundboard sound in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#send-soundboard-sound}\n\t * @param channelId - The id of the channel to send the soundboard sound in\n\t * @param body - The data for sending the soundboard sound\n\t * @param options - The options for sending the soundboard sound\n\t */\n\tpublic async sendSoundboardSound(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPISoundboardSendSoundJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.sendSoundboardSound(channelId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPISendSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Adds a recipient to a group DM channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#group-dm-add-recipient}\n\t * @param channelId - The id of the channel to add the recipient to\n\t * @param userId - The id of the user to add as a recipient\n\t * @param body - The data for adding the recipient\n\t * @param options - The options for adding the recipient\n\t */\n\tpublic async addGroupDMRecipient(\n\t\tchannelId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPutAPIChannelRecipientJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelRecipient(channelId, userId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Removes a recipient from a group DM channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#group-dm-remove-recipient}\n\t * @param channelId - The id of the channel to remove the recipient from\n\t * @param userId - The id of the user to remove as a recipient\n\t * @param options - The options for removing the recipient\n\t */\n\tpublic async removeGroupDMRecipient(\n\t\tchannelId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelRecipient(channelId, userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport { Routes, type RESTGetAPIGatewayBotResult, type RESTGetAPIGatewayResult } from 'discord-api-types/v10';\n\nexport class GatewayAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Gets gateway information.\n\t *\n\t * @see {@link https://discord.com/developers/docs/events/gateway#get-gateway}\n\t * @param options - The options for fetching the gateway information\n\t */\n\tpublic async get({ signal }: Pick<RequestData, 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.gateway(), {\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGatewayResult>;\n\t}\n\n\t/**\n\t * Gets gateway information with additional metadata.\n\t *\n\t * @see {@link https://discord.com/developers/docs/events/gateway#get-gateway-bot}\n\t * @param options - The options for fetching the gateway information\n\t */\n\tpublic async getBot({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.gatewayBot(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGatewayBotResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type REST, type RawFile, type RequestData } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype GuildWidgetStyle,\n\ttype RESTGetAPIAuditLogQuery,\n\ttype RESTGetAPIAuditLogResult,\n\ttype RESTGetAPIAutoModerationRuleResult,\n\ttype RESTGetAPIAutoModerationRulesResult,\n\ttype RESTGetAPIGuildBanResult,\n\ttype RESTGetAPIGuildBansQuery,\n\ttype RESTGetAPIGuildBansResult,\n\ttype RESTGetAPIGuildChannelsResult,\n\ttype RESTGetAPIGuildEmojiResult,\n\ttype RESTGetAPIGuildEmojisResult,\n\ttype RESTGetAPIGuildIntegrationsResult,\n\ttype RESTGetAPIGuildInvitesResult,\n\ttype RESTGetAPIGuildMemberResult,\n\ttype RESTGetAPIGuildMembersQuery,\n\ttype RESTGetAPIGuildMembersResult,\n\ttype RESTGetAPIGuildMembersSearchQuery,\n\ttype RESTGetAPIGuildMembersSearchResult,\n\ttype RESTGetAPIGuildOnboardingResult,\n\ttype RESTGetAPIGuildPreviewResult,\n\ttype RESTGetAPIGuildPruneCountQuery,\n\ttype RESTGetAPIGuildPruneCountResult,\n\ttype RESTGetAPIGuildQuery,\n\ttype RESTGetAPIGuildResult,\n\ttype RESTGetAPIGuildRoleMemberCountsResult,\n\ttype RESTGetAPIGuildRoleResult,\n\ttype RESTGetAPIGuildRolesResult,\n\ttype RESTGetAPIGuildScheduledEventQuery,\n\ttype RESTGetAPIGuildScheduledEventResult,\n\ttype RESTGetAPIGuildScheduledEventUsersQuery,\n\ttype RESTGetAPIGuildScheduledEventUsersResult,\n\ttype RESTGetAPIGuildScheduledEventsQuery,\n\ttype RESTGetAPIGuildScheduledEventsResult,\n\ttype RESTGetAPIGuildSoundboardSoundResult,\n\ttype RESTGetAPIGuildSoundboardSoundsResult,\n\ttype RESTGetAPIGuildStickerResult,\n\ttype RESTGetAPIGuildStickersResult,\n\ttype RESTGetAPIGuildTemplatesResult,\n\ttype RESTGetAPIGuildThreadsResult,\n\ttype RESTGetAPIGuildVanityUrlResult,\n\ttype RESTGetAPIGuildVoiceRegionsResult,\n\ttype RESTGetAPIGuildWebhooksResult,\n\ttype RESTGetAPIGuildWelcomeScreenResult,\n\ttype RESTGetAPIGuildWidgetImageResult,\n\ttype RESTGetAPIGuildWidgetJSONResult,\n\ttype RESTGetAPIGuildWidgetSettingsResult,\n\ttype RESTGetAPITemplateResult,\n\ttype RESTPatchAPIAutoModerationRuleJSONBody,\n\ttype RESTPatchAPIAutoModerationRuleResult,\n\ttype RESTPatchAPIGuildChannelPositionsJSONBody,\n\ttype RESTPatchAPIGuildEmojiJSONBody,\n\ttype RESTPatchAPIGuildEmojiResult,\n\ttype RESTPatchAPIGuildJSONBody,\n\ttype RESTPatchAPIGuildMemberJSONBody,\n\ttype RESTPatchAPIGuildMemberResult,\n\ttype RESTPatchAPIGuildResult,\n\ttype RESTPatchAPIGuildRoleJSONBody,\n\ttype RESTPatchAPIGuildRolePositionsJSONBody,\n\ttype RESTPatchAPIGuildRolePositionsResult,\n\ttype RESTPatchAPIGuildRoleResult,\n\ttype RESTPatchAPIGuildScheduledEventJSONBody,\n\ttype RESTPatchAPIGuildScheduledEventResult,\n\ttype RESTPatchAPIGuildSoundboardSoundJSONBody,\n\ttype RESTPatchAPIGuildSoundboardSoundResult,\n\ttype RESTPatchAPIGuildStickerJSONBody,\n\ttype RESTPatchAPIGuildStickerResult,\n\ttype RESTPatchAPIGuildTemplateJSONBody,\n\ttype RESTPatchAPIGuildTemplateResult,\n\ttype RESTPatchAPIGuildWelcomeScreenJSONBody,\n\ttype RESTPatchAPIGuildWelcomeScreenResult,\n\ttype RESTPatchAPIGuildWidgetSettingsJSONBody,\n\ttype RESTPatchAPIGuildWidgetSettingsResult,\n\ttype RESTPostAPIAutoModerationRuleJSONBody,\n\ttype RESTPostAPIAutoModerationRuleResult,\n\ttype RESTPostAPIGuildBulkBanJSONBody,\n\ttype RESTPostAPIGuildBulkBanResult,\n\ttype RESTPostAPIGuildChannelJSONBody,\n\ttype RESTPostAPIGuildChannelResult,\n\ttype RESTPostAPIGuildEmojiJSONBody,\n\ttype RESTPostAPIGuildEmojiResult,\n\ttype RESTPostAPIGuildPruneJSONBody,\n\ttype RESTPostAPIGuildPruneResult,\n\ttype RESTPostAPIGuildRoleJSONBody,\n\ttype RESTPostAPIGuildRoleResult,\n\ttype RESTPostAPIGuildScheduledEventJSONBody,\n\ttype RESTPostAPIGuildScheduledEventResult,\n\ttype RESTPostAPIGuildSoundboardSoundJSONBody,\n\ttype RESTPostAPIGuildSoundboardSoundResult,\n\ttype RESTPostAPIGuildStickerFormDataBody,\n\ttype RESTPostAPIGuildStickerResult,\n\ttype RESTPostAPIGuildTemplatesJSONBody,\n\ttype RESTPostAPIGuildTemplatesResult,\n\ttype RESTPutAPIGuildBanJSONBody,\n\ttype RESTPutAPIGuildIncidentActionsJSONBody,\n\ttype RESTPutAPIGuildIncidentActionsResult,\n\ttype RESTPutAPIGuildMemberJSONBody,\n\ttype RESTPutAPIGuildMemberResult,\n\ttype RESTPutAPIGuildOnboardingJSONBody,\n\ttype RESTPutAPIGuildOnboardingResult,\n\ttype RESTPutAPIGuildTemplateSyncResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport interface CreateStickerOptions extends Omit<RESTPostAPIGuildStickerFormDataBody, 'file'> {\n\tfile: RawFile;\n}\n\nexport class GuildsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild}\n\t * @param guildId - The id of the guild\n\t * @param query - The query options for fetching the guild\n\t * @param options - The options for fetching the guild\n\t */\n\tpublic async get(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guild(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildResult>;\n\t}\n\n\t/**\n\t * Fetches a guild preview\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-preview}\n\t * @param guildId - The id of the guild to fetch the preview from\n\t * @param options - The options for fetching the guild preview\n\t */\n\tpublic async getPreview(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildPreview(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildPreviewResult>;\n\t}\n\n\t/**\n\t * Edits a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild}\n\t * @param guildId - The id of the guild to edit\n\t * @param body - The new guild data\n\t * @param options - The options for editing the guild\n\t */\n\tpublic async edit(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guild(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildResult>;\n\t}\n\n\t/**\n\t * Adds user to the guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member}\n\t * @param guildId - The id of the guild to add the user to\n\t * @param userId - The id of the user to add\n\t * @param body - The data for adding users to the guild\n\t * @param options - The options for adding users to the guild\n\t */\n\tpublic async addMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPutAPIGuildMemberJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildMember(guildId, userId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Fetches members of a guild.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#list-guild-members}\n\t * @param guildId - The id of the guild\n\t * @param query - The query for fetching the guild members\n\t * @param options - The options for fetching the guild members\n\t */\n\tpublic async getMembers(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildMembersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildMembers(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildMembersResult>;\n\t}\n\n\t/**\n\t * Fetches a guild's channels\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-channels}\n\t * @param guildId - The id of the guild to fetch the channels from\n\t * @param options - The options for fetching the guild channels\n\t */\n\tpublic async getChannels(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildChannels(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildChannelsResult>;\n\t}\n\n\t/**\n\t * Creates a guild channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#create-guild-channel}\n\t * @param guildId - The id of the guild to create the channel in\n\t * @param body - The data to create the new channel\n\t * @param options - The options for creating the guild channel\n\t */\n\tpublic async createChannel(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildChannelJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildChannels(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildChannelResult>;\n\t}\n\n\t/**\n\t * Edits a guild channel's positions\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions}\n\t * @param guildId - The id of the guild to edit the channel positions from\n\t * @param body - The data to edit the channel positions with\n\t * @param options - The options for editing the guild channel positions\n\t */\n\tpublic async setChannelPositions(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildChannelPositionsJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.patch(Routes.guildChannels(guildId), { auth, reason, body, signal });\n\t}\n\n\t/**\n\t * Fetches the active threads in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#list-active-guild-threads}\n\t * @param guildId - The id of the guild to fetch the active threads from\n\t * @param options - The options for fetching the active threads\n\t */\n\tpublic async getActiveThreads(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildActiveThreads(guildId), { auth, signal }) as Promise<RESTGetAPIGuildThreadsResult>;\n\t}\n\n\t/**\n\t * Fetches a guild member ban\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-ban}\n\t * @param guildId - The id of the guild to fetch the ban from\n\t * @param userId - The id of the user to fetch the ban\n\t * @param options - The options for fetching the ban\n\t */\n\tpublic async getMemberBan(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildBan(guildId, userId), { auth, signal }) as Promise<RESTGetAPIGuildBanResult>;\n\t}\n\n\t/**\n\t * Fetches guild member bans\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-bans}\n\t * @param guildId - The id of the guild to fetch the bans from\n\t * @param query - The query options for fetching the bans\n\t * @param options - The options for fetching the bans\n\t */\n\tpublic async getMemberBans(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildBansQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildBans(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildBansResult>;\n\t}\n\n\t/**\n\t * Bans a user from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#create-guild-ban}\n\t * @param guildId - The id of the guild to ban the member in\n\t * @param userId - The id of the user to ban\n\t * @param body - The payload for banning the user\n\t * @param options - The options for banning the user\n\t */\n\tpublic async banUser(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPutAPIGuildBanJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.guildBan(guildId, userId), { auth, reason, body, signal });\n\t}\n\n\t/**\n\t * Unbans a user from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-ban}\n\t * @param guildId - The id of the guild to unban the member in\n\t * @param userId - The id of the user to unban\n\t * @param options - The options for unbanning the user\n\t */\n\tpublic async unbanUser(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildBan(guildId, userId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Bulk ban users from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#bulk-guild-ban}\n\t * @param guildId - The id of the guild to bulk ban users in\n\t * @param body - The data for bulk banning users\n\t * @param options - The options for bulk banning users\n\t */\n\tpublic async bulkBanUsers(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildBulkBanJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildBulkBan(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildBulkBanResult>;\n\t}\n\n\t/**\n\t * Gets all the roles in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-roles}\n\t * @param guildId - The id of the guild to fetch the roles from\n\t * @param options - The options for fetching the guild roles\n\t */\n\tpublic async getRoles(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildRoles(guildId), { auth, signal }) as Promise<RESTGetAPIGuildRolesResult>;\n\t}\n\n\t/**\n\t * Get a role in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-role}\n\t * @param guildId - The id of the guild to fetch the role from\n\t * @param roleId - The id of the role to fetch\n\t * @param options - The options for fetching the guild role\n\t */\n\tpublic async getRole(\n\t\tguildId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildRole(guildId, roleId), { auth, signal }) as Promise<RESTGetAPIGuildRoleResult>;\n\t}\n\n\t/**\n\t * Creates a guild role\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#create-guild-role}\n\t * @param guildId - The id of the guild to create the role in\n\t * @param body - The data to create the role with\n\t * @param options - The options for creating the guild role\n\t */\n\tpublic async createRole(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildRoleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildRoles(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildRoleResult>;\n\t}\n\n\t/**\n\t * Sets role positions in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-role-positions}\n\t * @param guildId - The id of the guild to set role positions for\n\t * @param body - The data for setting a role position\n\t * @param options - The options for setting role positions\n\t */\n\tpublic async setRolePositions(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildRolePositionsJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildRoles(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildRolePositionsResult>;\n\t}\n\n\t/**\n\t * Edits a guild role\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-role}\n\t * @param guildId - The id of the guild to edit the role in\n\t * @param roleId - The id of the role to edit\n\t * @param body - data for editing the role\n\t * @param options - The options for editing the guild role\n\t */\n\tpublic async editRole(\n\t\tguildId: Snowflake,\n\t\troleId: Snowflake,\n\t\tbody: RESTPatchAPIGuildRoleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildRole(guildId, roleId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildRoleResult>;\n\t}\n\n\t/**\n\t * Deletes a guild role\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#delete-guild-role}\n\t * @param guildId - The id of the guild to delete the role in\n\t * @param roleId - The id of the role to delete\n\t * @param options - The options for deleting the guild role\n\t */\n\tpublic async deleteRole(\n\t\tguildId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildRole(guildId, roleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetch the number of members that can be pruned from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-prune-count}\n\t * @param guildId - The id of the guild to fetch the number of pruned members from\n\t * @param query - The query options for fetching the number of pruned members\n\t * @param options - The options for fetching the number of pruned members\n\t */\n\tpublic async getPruneCount(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildPruneCountQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildPrune(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPIGuildPruneCountResult>;\n\t}\n\n\t/**\n\t * Prunes members in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#begin-guild-prune}\n\t * @param guildId - The id of the guild to prune members in\n\t * @param body - The options for pruning members\n\t * @param options - The options for initiating the prune\n\t */\n\tpublic async beginPrune(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildPruneJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildPrune(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildPruneResult>;\n\t}\n\n\t/**\n\t * Fetches voice regions for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-voice-regions}\n\t * @param guildId - The id of the guild to fetch the voice regions from\n\t * @param options - The options for fetching the voice regions\n\t */\n\tpublic async getVoiceRegions(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildVoiceRegions(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildVoiceRegionsResult>;\n\t}\n\n\t/**\n\t * Fetches the invites for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-invites}\n\t * @param guildId - The id of the guild to fetch the invites from\n\t * @param options - The options for fetching the invites\n\t */\n\tpublic async getInvites(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildInvites(guildId), { auth, signal }) as Promise<RESTGetAPIGuildInvitesResult>;\n\t}\n\n\t/**\n\t * Fetches the integrations for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-integrations}\n\t * @param guildId - The id of the guild to fetch the integrations from\n\t * @param options - The options for fetching the integrations\n\t */\n\tpublic async getIntegrations(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildIntegrations(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildIntegrationsResult>;\n\t}\n\n\t/**\n\t * Deletes an integration from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#delete-guild-integration}\n\t * @param guildId - The id of the guild to delete the integration from\n\t * @param integrationId - The id of the integration to delete\n\t * @param options - The options for deleting the integration\n\t */\n\tpublic async deleteIntegration(\n\t\tguildId: Snowflake,\n\t\tintegrationId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildIntegration(guildId, integrationId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches the widget settings for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget-settings}\n\t * @param guildId - The id of the guild to fetch the widget settings from\n\t * @param options - The options for fetching the widget settings\n\t */\n\tpublic async getWidgetSettings(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWidgetSettings(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildWidgetSettingsResult>;\n\t}\n\n\t/**\n\t * Edits the widget settings for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-widget}\n\t * @param guildId - The id of the guild to edit the widget settings from\n\t * @param body - The new widget settings data\n\t * @param options - The options for editing the widget settings\n\t */\n\tpublic async editWidgetSettings(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildWidgetSettingsJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildWidgetSettings(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildWidgetSettingsResult>;\n\t}\n\n\t/**\n\t * Fetches the widget for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget}\n\t * @param guildId - The id of the guild to fetch the widget from\n\t * @param options - The options for fetching the widget\n\t */\n\tpublic async getWidget(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWidgetJSON(guildId), { auth, signal }) as Promise<RESTGetAPIGuildWidgetJSONResult>;\n\t}\n\n\t/**\n\t * Fetches the vanity url for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-vanity-url}\n\t * @param guildId - The id of the guild to fetch the vanity url from\n\t * @param options - The options for fetching the vanity url\n\t */\n\tpublic async getVanityURL(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildVanityUrl(guildId), { auth, signal }) as Promise<RESTGetAPIGuildVanityUrlResult>;\n\t}\n\n\t/**\n\t * Fetches the widget image for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget-image}\n\t * @param guildId - The id of the guild to fetch the widget image from\n\t * @param style - The style of the widget image\n\t * @param options - The options for fetching the widget image\n\t */\n\tpublic async getWidgetImage(\n\t\tguildId: Snowflake,\n\t\tstyle?: GuildWidgetStyle,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildWidgetImage(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams({ style }),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildWidgetImageResult>;\n\t}\n\n\t/**\n\t * Fetches the welcome screen for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-welcome-screen}\n\t * @param guildId - The id of the guild to fetch the welcome screen from\n\t * @param options - The options for fetching the welcome screen\n\t */\n\tpublic async getWelcomeScreen(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWelcomeScreen(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildWelcomeScreenResult>;\n\t}\n\n\t/**\n\t * Edits the welcome screen for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen}\n\t * @param guildId - The id of the guild to edit the welcome screen for\n\t * @param body - The new welcome screen data\n\t * @param options - The options for editing the welcome screen\n\t */\n\tpublic async editWelcomeScreen(\n\t\tguildId: Snowflake,\n\t\tbody?: RESTPatchAPIGuildWelcomeScreenJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildWelcomeScreen(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildWelcomeScreenResult>;\n\t}\n\n\t/**\n\t * Fetches all emojis for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#list-guild-emojis}\n\t * @param guildId - The id of the guild to fetch the emojis from\n\t * @param options - The options for fetching the emojis\n\t */\n\tpublic async getEmojis(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildEmojis(guildId), { auth, signal }) as Promise<RESTGetAPIGuildEmojisResult>;\n\t}\n\n\t/**\n\t * Fetches an emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#get-guild-emoji}\n\t * @param guildId - The id of the guild to fetch the emoji from\n\t * @param emojiId - The id of the emoji to fetch\n\t * @param options - The options for fetching the emoji\n\t */\n\tpublic async getEmoji(\n\t\tguildId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildEmoji(guildId, emojiId), { auth, signal }) as Promise<RESTGetAPIGuildEmojiResult>;\n\t}\n\n\t/**\n\t * Creates a new emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#create-guild-emoji}\n\t * @param guildId - The id of the guild to create the emoji from\n\t * @param body - The data for creating the emoji\n\t * @param options - The options for creating the emoji\n\t */\n\tpublic async createEmoji(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildEmojiJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildEmojis(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildEmojiResult>;\n\t}\n\n\t/**\n\t * Edits an emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#modify-guild-emoji}\n\t * @param guildId - The id of the guild to edit the emoji from\n\t * @param emojiId - The id of the emoji to edit\n\t * @param body - The data for editing the emoji\n\t * @param options - The options for editing the emoji\n\t */\n\tpublic async editEmoji(\n\t\tguildId: Snowflake,\n\t\temojiId: Snowflake,\n\t\tbody: RESTPatchAPIGuildEmojiJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildEmoji(guildId, emojiId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildEmojiResult>;\n\t}\n\n\t/**\n\t * Deletes an emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#delete-guild-emoji}\n\t * @param guildId - The id of the guild to delete the emoji from\n\t * @param emojiId - The id of the emoji to delete\n\t * @param options - The options for deleting the emoji\n\t */\n\tpublic async deleteEmoji(\n\t\tguildId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildEmoji(guildId, emojiId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches all scheduled events for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild}\n\t * @param guildId - The id of the guild to fetch the scheduled events from\n\t * @param query - The query options for fetching the scheduled events\n\t * @param options - The options for fetching the scheduled events\n\t */\n\tpublic async getScheduledEvents(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildScheduledEventsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildScheduledEvents(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildScheduledEventsResult>;\n\t}\n\n\t/**\n\t * Creates a new scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event}\n\t * @param guildId - The id of the guild to create the scheduled event from\n\t * @param body - The data to create the event with\n\t * @param options - The options for creating the scheduled event\n\t */\n\tpublic async createScheduledEvent(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildScheduledEventJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildScheduledEvents(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildScheduledEventResult>;\n\t}\n\n\t/**\n\t * Fetches a scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event}\n\t * @param guildId - The id of the guild to fetch the scheduled event from\n\t * @param eventId - The id of the scheduled event to fetch\n\t * @param query - The options for fetching the scheduled event\n\t * @param options - The options for fetching the scheduled event\n\t */\n\tpublic async getScheduledEvent(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\tquery: RESTGetAPIGuildScheduledEventQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildScheduledEvent(guildId, eventId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildScheduledEventResult>;\n\t}\n\n\t/**\n\t * Edits a scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}\n\t * @param guildId - The id of the guild to edit the scheduled event from\n\t * @param eventId - The id of the scheduled event to edit\n\t * @param body - The new event data\n\t * @param options - The options for editing the scheduled event\n\t */\n\tpublic async editScheduledEvent(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\tbody: RESTPatchAPIGuildScheduledEventJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildScheduledEvent(guildId, eventId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildScheduledEventResult>;\n\t}\n\n\t/**\n\t * Deletes a scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event}\n\t * @param guildId - The id of the guild to delete the scheduled event from\n\t * @param eventId - The id of the scheduled event to delete\n\t * @param options - The options for deleting the scheduled event\n\t */\n\tpublic async deleteScheduledEvent(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildScheduledEvent(guildId, eventId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Gets all users that are interested in a scheduled event\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users}\n\t * @param guildId - The id of the guild to fetch the scheduled event users from\n\t * @param eventId - The id of the scheduled event to fetch the users for\n\t * @param query - The options for fetching the scheduled event users\n\t * @param options - The options for fetching the scheduled event users\n\t */\n\tpublic async getScheduledEventUsers(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\tquery: RESTGetAPIGuildScheduledEventUsersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildScheduledEventUsers(guildId, eventId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildScheduledEventUsersResult>;\n\t}\n\n\t/**\n\t * Fetches all the templates for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-templates}\n\t * @param guildId - The id of the guild to fetch the templates from\n\t * @param options - The options for fetching the templates\n\t */\n\tpublic async getTemplates(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildTemplates(guildId), { auth, signal }) as Promise<RESTGetAPIGuildTemplatesResult>;\n\t}\n\n\t/**\n\t * Syncs a template for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#sync-guild-template}\n\t * @param guildId - The id of the guild to sync the template from\n\t * @param templateCode - The code of the template to sync\n\t * @param options - The options for syncing the template\n\t */\n\tpublic async syncTemplate(\n\t\tguildId: Snowflake,\n\t\ttemplateCode: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildTemplate(guildId, templateCode), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildTemplateSyncResult>;\n\t}\n\n\t/**\n\t * Edits a template for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#modify-guild-template}\n\t * @param guildId - The id of the guild to edit the template from\n\t * @param templateCode - The code of the template to edit\n\t * @param body - The data for editing the template\n\t * @param options - The options for editing the template\n\t */\n\tpublic async editTemplate(\n\t\tguildId: Snowflake,\n\t\ttemplateCode: string,\n\t\tbody: RESTPatchAPIGuildTemplateJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildTemplate(guildId, templateCode), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildTemplateResult>;\n\t}\n\n\t/**\n\t * Deletes a template for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#delete-guild-template}\n\t * @param guildId - The id of the guild to delete the template from\n\t * @param templateCode - The code of the template to delete\n\t * @param options - The options for deleting the template\n\t */\n\tpublic async deleteTemplate(\n\t\tguildId: Snowflake,\n\t\ttemplateCode: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildTemplate(guildId, templateCode), { auth, signal });\n\t}\n\n\t/**\n\t * Fetches all the stickers for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#list-guild-stickers}\n\t * @param guildId - The id of the guild to fetch the stickers from\n\t * @param options - The options for fetching the stickers\n\t */\n\tpublic async getStickers(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildStickers(guildId), { auth, signal }) as Promise<RESTGetAPIGuildStickersResult>;\n\t}\n\n\t/**\n\t * Fetches a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#get-guild-sticker}\n\t * @param guildId - The id of the guild to fetch the sticker from\n\t * @param stickerId - The id of the sticker to fetch\n\t * @param options - The options for fetching the sticker\n\t */\n\tpublic async getSticker(\n\t\tguildId: Snowflake,\n\t\tstickerId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildSticker(guildId, stickerId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildStickerResult>;\n\t}\n\n\t/**\n\t * Creates a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#create-guild-sticker}\n\t * @param guildId - The id of the guild to create the sticker for\n\t * @param body - The data for creating the sticker\n\t * @param options - The options for creating the sticker\n\t */\n\tpublic async createSticker(\n\t\tguildId: Snowflake,\n\t\t{ file, ...body }: CreateStickerOptions,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tconst fileData = { ...file, key: 'file' };\n\n\t\treturn this.rest.post(Routes.guildStickers(guildId), {\n\t\t\tauth,\n\t\t\tappendToFormData: true,\n\t\t\tbody,\n\t\t\tfiles: [fileData],\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildStickerResult>;\n\t}\n\n\t/**\n\t * Edits a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#modify-guild-sticker}\n\t * @param guildId - The id of the guild to edit the sticker from\n\t * @param stickerId - The id of the sticker to edit\n\t * @param body - The data for editing the sticker\n\t * @param options - The options for editing the sticker\n\t */\n\tpublic async editSticker(\n\t\tguildId: Snowflake,\n\t\tstickerId: Snowflake,\n\t\tbody: RESTPatchAPIGuildStickerJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildSticker(guildId, stickerId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildStickerResult>;\n\t}\n\n\t/**\n\t * Deletes a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#delete-guild-sticker}\n\t * @param guildId - The id of the guild to delete the sticker from\n\t * @param stickerId - The id of the sticker to delete\n\t * @param options - The options for deleting the sticker\n\t */\n\tpublic async deleteSticker(\n\t\tguildId: Snowflake,\n\t\tstickerId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildSticker(guildId, stickerId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches the audit logs for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/audit-log#get-guild-audit-log}\n\t * @param guildId - The id of the guild to fetch the audit logs from\n\t * @param query - The query options for fetching the audit logs\n\t * @param options - The options for fetching the audit logs\n\t */\n\tpublic async getAuditLogs(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIAuditLogQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildAuditLog(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIAuditLogResult>;\n\t}\n\n\t/**\n\t * Fetches all auto moderation rules for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#list-auto-moderation-rules-for-guild}\n\t * @param guildId - The id of the guild to fetch the auto moderation rules from\n\t * @param options - The options for fetching the auto moderation rules\n\t */\n\tpublic async getAutoModerationRules(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildAutoModerationRules(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIAutoModerationRulesResult>;\n\t}\n\n\t/**\n\t * Fetches an auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#get-auto-moderation-rule}\n\t * @param guildId - The id of the guild to fetch the auto moderation rule from\n\t * @param ruleId - The id of the auto moderation rule to fetch\n\t * @param options - The options for fetching the auto moderation rule\n\t */\n\tpublic async getAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\truleId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildAutoModerationRule(guildId, ruleId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIAutoModerationRuleResult>;\n\t}\n\n\t/**\n\t * Creates a new auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule}\n\t * @param guildId - The id of the guild to create the auto moderation rule from\n\t * @param body - The data for creating the auto moderation rule\n\t * @param options - The options for creating the auto moderation rule\n\t */\n\tpublic async createAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIAutoModerationRuleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildAutoModerationRules(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIAutoModerationRuleResult>;\n\t}\n\n\t/**\n\t * Edits an auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule}\n\t * @param guildId - The id of the guild to edit the auto moderation rule from\n\t * @param ruleId - The id of the auto moderation rule to edit\n\t * @param body - The data for editing the auto moderation rule\n\t * @param options - The options for editing the auto moderation rule\n\t */\n\tpublic async editAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\truleId: Snowflake,\n\t\tbody: RESTPatchAPIAutoModerationRuleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildAutoModerationRule(guildId, ruleId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIAutoModerationRuleResult>;\n\t}\n\n\t/**\n\t * Deletes an auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#delete-auto-moderation-rule}\n\t * @param guildId - The id of the guild to delete the auto moderation rule from\n\t * @param ruleId - The id of the auto moderation rule to delete\n\t * @param options - The options for deleting the auto moderation rule\n\t */\n\tpublic async deleteAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\truleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildAutoModerationRule(guildId, ruleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param options - The options for fetching the guild member\n\t */\n\tpublic async getMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildMember(guildId, userId), { auth, signal }) as Promise<RESTGetAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Searches for guild members\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#search-guild-members}\n\t * @param guildId - The id of the guild to search in\n\t * @param query - The query to search for\n\t * @param options - The options for searching for guild members\n\t */\n\tpublic async searchForMembers(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildMembersSearchQuery,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildMembersSearch(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildMembersSearchResult>;\n\t}\n\n\t/**\n\t * Edits a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param body - The data for editing the guild member\n\t * @param options - The options for editing the guild member\n\t */\n\tpublic async editMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPatchAPIGuildMemberJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildMember(guildId, userId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Removes a member from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param options - The options for removing the guild member\n\t */\n\tpublic async removeMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.delete(Routes.guildMember(guildId, userId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Adds a role to a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member-role}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param roleId - The id of the role\n\t * @param options - The options for adding a role to a guild member\n\t */\n\tpublic async addRoleToMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.guildMemberRole(guildId, userId, roleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Removes a role from a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-member-role}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param roleId - The id of the role\n\t * @param options - The options for removing a role from a guild member\n\t */\n\tpublic async removeRoleFromMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildMemberRole(guildId, userId, roleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches a guild template\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-template}\n\t * @param templateCode - The code of the template\n\t * @param options - The options for fetching the guild template\n\t */\n\tpublic async getTemplate(templateCode: string, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.template(templateCode), { auth, signal }) as Promise<RESTGetAPITemplateResult>;\n\t}\n\n\t/**\n\t * Creates a new template\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-template}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for creating the template\n\t * @param options - The options for creating the template\n\t */\n\tpublic async createTemplate(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildTemplatesJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildTemplates(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildTemplatesResult>;\n\t}\n\n\t/**\n\t * Fetches webhooks for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-guild-webhooks}\n\t * @param id - The id of the guild\n\t * @param options - The options for fetching the webhooks\n\t */\n\tpublic async getWebhooks(id: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWebhooks(id), { auth, signal }) as Promise<RESTGetAPIGuildWebhooksResult>;\n\t}\n\n\t/**\n\t * Fetches a guild onboarding\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-onboarding}\n\t * @param guildId - The id of the guild\n\t * @param options - The options for fetching the guild onboarding\n\t */\n\tpublic async getOnboarding(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildOnboarding(guildId), { auth, signal }) as Promise<RESTGetAPIGuildOnboardingResult>;\n\t}\n\n\t/**\n\t * Edits a guild onboarding\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-onboarding}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for editing the guild onboarding\n\t * @param options - The options for editing the guild onboarding\n\t */\n\tpublic async editOnboarding(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPutAPIGuildOnboardingJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildOnboarding(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildOnboardingResult>;\n\t}\n\n\t/**\n\t * Fetches all the soundboard sounds for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#list-guild-soundboard-sounds}\n\t * @param guildId - The id of the guild to fetch the soundboard sounds for\n\t * @param options - The options for fetching the soundboard sounds\n\t */\n\tpublic async getSoundboardSounds(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildSoundboardSounds(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildSoundboardSoundsResult>;\n\t}\n\n\t/**\n\t * Fetches a soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#get-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to fetch the soundboard sound for\n\t * @param soundId - The id of the soundboard sound to fetch\n\t * @param options - The options for fetching the soundboard sound\n\t */\n\tpublic async getSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tsoundId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildSoundboardSound(guildId, soundId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Creates a new soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#create-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to create the soundboard sound for\n\t * @param body - The data for creating the soundboard sound\n\t * @param options - The options for creating the soundboard sound\n\t */\n\tpublic async createSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildSoundboardSoundJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildSoundboardSounds(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Edits a soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#modify-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to edit the soundboard sound for\n\t * @param soundId - The id of the soundboard sound to edit\n\t * @param body - The data for editing the soundboard sound\n\t * @param options - The options for editing the soundboard sound\n\t */\n\tpublic async editSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tsoundId: Snowflake,\n\t\tbody: RESTPatchAPIGuildSoundboardSoundJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildSoundboardSound(guildId, soundId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Deletes a soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#delete-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to delete the soundboard sound for\n\t * @param soundId - The id of the soundboard sound to delete\n\t * @param options - The options for deleting the soundboard sound\n\t */\n\tpublic async deleteSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tsoundId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildSoundboardSound(guildId, soundId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Modifies incident actions for a guild.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-incident-actions}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for modifying guild incident actions\n\t * @param options - The options for modifying guild incident actions\n\t */\n\tpublic async editIncidentActions(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPutAPIGuildIncidentActionsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildIncidentActions(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildIncidentActionsResult>;\n\t}\n\n\t/**\n\t * Fetches role member counts for a guild.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-role-member-counts}\n\t * @param guildId - The id of the guild to fetch role member counts for\n\t * @param options - The options for fetching role member counts\n\t */\n\tpublic async getRoleMemberCounts(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildRoleMemberCounts(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildRoleMemberCountsResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RawFile, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tInteractionResponseType,\n\tRoutes,\n\ttype APICommandAutocompleteInteractionResponseCallbackData,\n\ttype APIInteractionResponseCallbackData,\n\ttype APIInteractionResponseDeferredChannelMessageWithSource,\n\ttype APIModalInteractionResponseCallbackData,\n\ttype RESTGetAPIWebhookWithTokenMessageResult,\n\ttype RESTPostAPIInteractionCallbackQuery,\n\ttype RESTPostAPIInteractionCallbackWithResponseResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\nimport type { WebhooksAPI } from './webhook.js';\n\nexport interface CreateInteractionResponseOptions\n\textends APIInteractionResponseCallbackData, RESTPostAPIInteractionCallbackQuery {\n\tfiles?: RawFile[];\n}\n\nexport type CreateInteractionDeferResponseOptions = APIInteractionResponseDeferredChannelMessageWithSource['data'] &\n\tRESTPostAPIInteractionCallbackQuery;\n\nexport type CreateInteractionFollowUpResponseOptions = APIInteractionResponseCallbackData & { files?: RawFile[] };\nexport type EditInteractionResponseOptions = APIInteractionResponseCallbackData & { files?: RawFile[] };\n\nexport type CreateInteractionUpdateMessageResponseOptions = APIInteractionResponseCallbackData &\n\tRESTPostAPIInteractionCallbackQuery & { files?: RawFile[] };\n\nexport type CreateAutocompleteResponseOptions = APICommandAutocompleteInteractionResponseCallbackData &\n\tRESTPostAPIInteractionCallbackQuery;\n\nexport type CreateModalResponseOptions = APIModalInteractionResponseCallbackData & RESTPostAPIInteractionCallbackQuery;\n\nexport class InteractionsAPI {\n\tpublic constructor(\n\t\tprivate readonly rest: REST,\n\t\tprivate readonly webhooks: WebhooksAPI,\n\t) {}\n\n\t/**\n\t * Replies to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Replies to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Replies to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ files, with_response, ...data }: CreateInteractionResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tfiles,\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.ChannelMessageWithSource,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Defers the reply to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the reply\n\t * @param options - The options for deferring\n\t */\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionDeferResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Defers the reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the reply\n\t * @param options - The options for deferring\n\t */\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: CreateInteractionDeferResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Defers the reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the reply\n\t * @param options - The options for deferring\n\t */\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: CreateInteractionDeferResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response, ...data }: CreateInteractionDeferResponseOptions = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.DeferredChannelMessageWithSource,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Defers an update from a message component interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the update\n\t * @param options - The options for deferring\n\t */\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: RESTPostAPIInteractionCallbackQuery & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Defers an update from a message component interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the update\n\t * @param options - The options for deferring\n\t */\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Defers an update from a message component interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the update\n\t * @param options - The options for deferring\n\t */\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response }: RESTPostAPIInteractionCallbackQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.DeferredMessageUpdate,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Reply to a deferred interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-followup-message}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async followUp(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionFollowUpResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.webhooks.execute(applicationId, interactionToken, { ...body, wait: true }, { signal });\n\t}\n\n\t/**\n\t * Edits the initial reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response}\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#edit-followup-message}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for editing the reply\n\t * @param messageId - The id of the message to edit. If omitted, the original reply will be edited\n\t * @param options - The options for editing the reply\n\t */\n\tpublic async editReply(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: EditInteractionResponseOptions,\n\t\tmessageId?: Snowflake | '@original',\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.webhooks.editMessage(applicationId, interactionToken, messageId ?? '@original', callbackData, {\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetches the initial reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#get-original-interaction-response}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param options - The options for fetching the reply\n\t */\n\tpublic async getOriginalReply(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.webhooks.getMessage(\n\t\t\tapplicationId,\n\t\t\tinteractionToken,\n\t\t\t'@original',\n\t\t\t{},\n\t\t\t{ signal },\n\t\t) as Promise<RESTGetAPIWebhookWithTokenMessageResult>;\n\t}\n\n\t/**\n\t * Deletes the initial reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#delete-original-interaction-response}\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#delete-followup-message}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param messageId - The id of the message to delete. If omitted, the original reply will be deleted\n\t * @param options - The options for deleting the reply\n\t */\n\tpublic async deleteReply(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\tmessageId?: Snowflake | '@original',\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.webhooks.deleteMessage(applicationId, interactionToken, messageId ?? '@original', {}, { signal });\n\t}\n\n\t/**\n\t * Updates the message the component interaction was triggered on and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for updating the interaction\n\t * @param options - The options for updating the interaction\n\t */\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateInteractionUpdateMessageResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Updates the message the component interaction was triggered on\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for updating the interaction\n\t * @param options - The options for updating the interaction\n\t */\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateInteractionUpdateMessageResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Updates the message the component interaction was triggered on\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for updating the interaction\n\t * @param options - The options for updating the interaction\n\t */\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateInteractionUpdateMessageResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ files, with_response, ...data }: CreateInteractionUpdateMessageResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tfiles,\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.UpdateMessage,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Sends an autocomplete response to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for the autocomplete response\n\t * @param options - The options for sending the autocomplete response\n\t */\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateAutocompleteResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Sends an autocomplete response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for the autocomplete response\n\t * @param options - The options for sending the autocomplete response\n\t */\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateAutocompleteResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Sends an autocomplete response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for the autocomplete response\n\t * @param options - The options for sending the autocomplete response\n\t */\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateAutocompleteResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response, ...data }: CreateAutocompleteResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.ApplicationCommandAutocompleteResult,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Sends a modal response to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The modal callback data to send\n\t * @param options - The options for sending the modal\n\t */\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateModalResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Sends a modal response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The modal callback data to send\n\t * @param options - The options for sending the modal\n\t */\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateModalResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Sends a modal response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The modal callback data to send\n\t * @param options - The options for sending the modal\n\t */\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateModalResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response, ...data }: CreateModalResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.Modal,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Launches an activity and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for launching the activity\n\t * @param options - The options for launching the activity\n\t */\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: RESTPostAPIInteractionCallbackQuery & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Launches an activity\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for launching the activity\n\t * @param options - The options for launching the activity\n\t */\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Launches an activity\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for launching the activity\n\t * @param options - The options for launching the activity\n\t */\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response }: RESTPostAPIInteractionCallbackQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.LaunchActivity,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport { Routes, type RESTGetAPIInviteQuery, type RESTGetAPIInviteResult } from 'discord-api-types/v10';\n\nexport class InvitesAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches an invite\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/invite#get-invite}\n\t * @param code - The invite code\n\t * @param query - The options for fetching the invite\n\t * @param options - The options for fetching the invite\n\t */\n\tpublic async get(\n\t\tcode: string,\n\t\tquery: RESTGetAPIInviteQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.invite(code), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIInviteResult>;\n\t}\n\n\t/**\n\t * Deletes an invite\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/invite#delete-invite}\n\t * @param code - The invite code\n\t * @param options - The options for deleting the invite\n\t */\n\tpublic async delete(code: string, { auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {}) {\n\t\tawait this.rest.delete(Routes.invite(code), { auth, reason, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIEntitlementsQuery,\n\ttype RESTGetAPIEntitlementResult,\n\ttype RESTGetAPIEntitlementsResult,\n\ttype RESTGetAPISKUsResult,\n\ttype RESTGetAPISKUSubscriptionResult,\n\ttype RESTGetAPISKUSubscriptionsQuery,\n\ttype RESTGetAPISKUSubscriptionsResult,\n\ttype RESTPostAPIEntitlementJSONBody,\n\ttype RESTPostAPIEntitlementResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class MonetizationAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches the SKUs for an application.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sku#list-skus}\n\t * @param applicationId - The application id to fetch SKUs for\n\t * @param options - The options for fetching the SKUs.\n\t */\n\tpublic async getSKUs(applicationId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.skus(applicationId), { auth, signal }) as Promise<RESTGetAPISKUsResult>;\n\t}\n\n\t/**\n\t * Fetches subscriptions for an SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/subscription#list-sku-subscriptions}\n\t * @param skuId - The SKU id to fetch subscriptions for\n\t * @param query - The query options for fetching subscriptions\n\t * @param options - The options for fetching subscriptions\n\t */\n\tpublic async getSKUSubscriptions(\n\t\tskuId: Snowflake,\n\t\tquery: RESTGetAPISKUSubscriptionsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.skuSubscriptions(skuId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPISKUSubscriptionsResult>;\n\t}\n\n\t/**\n\t * Fetches a subscription for an SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/subscription#get-sku-subscription}\n\t * @param skuId - The SKU id to fetch subscription for\n\t * @param subscriptionId - The subscription id to fetch\n\t * @param options - The options for fetching the subscription\n\t */\n\tpublic async getSKUSubscription(\n\t\tskuId: Snowflake,\n\t\tsubscriptionId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.skuSubscription(skuId, subscriptionId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPISKUSubscriptionResult>;\n\t}\n\n\t/**\n\t * Fetches the entitlements for an application.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#list-entitlements}\n\t * @param applicationId - The application id to fetch entitlements for\n\t * @param query - The query options for fetching entitlements\n\t * @param options - The options for fetching entitlements\n\t */\n\tpublic async getEntitlements(\n\t\tapplicationId: Snowflake,\n\t\tquery: RESTGetAPIEntitlementsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.entitlements(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPIEntitlementsResult>;\n\t}\n\n\t/**\n\t * Fetches an entitlement for an application.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#get-entitlement}\n\t * @param applicationId - The application id to fetch the entitlement for\n\t * @param entitlementId - The entitlement id to fetch\n\t * @param options - The options for fetching the entitlement\n\t */\n\tpublic async getEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tentitlementId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.entitlement(applicationId, entitlementId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIEntitlementResult>;\n\t}\n\n\t/**\n\t * Creates a test entitlement for an application's SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#create-test-entitlement}\n\t * @param applicationId - The application id to create the entitlement for\n\t * @param body - The data for creating the entitlement\n\t * @param options - The options for creating the entitlement\n\t */\n\tpublic async createTestEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPostAPIEntitlementJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.entitlements(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIEntitlementResult>;\n\t}\n\n\t/**\n\t * Deletes a test entitlement for an application's SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#delete-test-entitlement}\n\t * @param applicationId - The application id to delete the entitlement for\n\t * @param entitlementId - The entitlement id to delete\n\t * @param options - The options for deleting the entitlement\n\t */\n\tpublic async deleteTestEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tentitlementId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.entitlement(applicationId, entitlementId), { auth, signal });\n\t}\n\n\t/**\n\t * Marks a given entitlement for the user as consumed. Only available for One-Time Purchase consumable SKUs.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#consume-an-entitlement}\n\t * @param applicationId - The application id to consume the entitlement for\n\t * @param entitlementId - The entitlement id to consume\n\t * @param options - The options for consuming the entitlement\n\t */\n\tpublic async consumeEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tentitlementId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.consumeEntitlement(applicationId, entitlementId), { auth, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { type RequestData, type REST, makeURLSearchParams } from '@discordjs/rest';\nimport {\n\tRoutes,\n\tRouteBases,\n\ttype RESTOAuth2AuthorizationQuery,\n\ttype RESTPostOAuth2RefreshTokenURLEncodedData,\n\ttype RESTPostOAuth2RefreshTokenResult,\n\ttype RESTPostOAuth2ClientCredentialsURLEncodedData,\n\ttype RESTPostOAuth2ClientCredentialsResult,\n\ttype RESTGetAPIOAuth2CurrentAuthorizationResult,\n\ttype RESTGetAPIOAuth2CurrentApplicationResult,\n\ttype RESTPostOAuth2AccessTokenURLEncodedData,\n\ttype RESTPostOAuth2AccessTokenResult,\n\ttype RESTPostOAuth2TokenRevocationQuery,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class OAuth2API {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Creates an OAuth2 authorization URL given the options\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-authorization-url-example}\n\t * @param options - The options for creating the authorization URL\n\t */\n\tpublic generateAuthorizationURL(options: RESTOAuth2AuthorizationQuery) {\n\t\tconst url = new URL(`${RouteBases.api}${Routes.oauth2Authorization()}`);\n\t\turl.search = makeURLSearchParams(options).toString();\n\t\treturn url.toString();\n\t}\n\n\t/**\n\t * Performs an OAuth2 token exchange, giving you an access token\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-access-token-exchange-example}\n\t * @param body - The body of the token exchange request\n\t * @param options - The options for the token exchange request\n\t */\n\tpublic async tokenExchange(\n\t\tbody: RESTPostOAuth2AccessTokenURLEncodedData,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.oauth2TokenExchange(), {\n\t\t\tbody: makeURLSearchParams<RESTPostOAuth2AccessTokenURLEncodedData>(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostOAuth2AccessTokenResult>;\n\t}\n\n\t/**\n\t * Refreshes an OAuth2 access token, giving you a new one\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-refresh-token-exchange-example}\n\t * @param body - The options for the refresh token request\n\t * @param options - The options for the refresh token request\n\t */\n\tpublic async refreshToken(\n\t\tbody: RESTPostOAuth2RefreshTokenURLEncodedData,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.oauth2TokenExchange(), {\n\t\t\tbody: makeURLSearchParams<RESTPostOAuth2RefreshTokenURLEncodedData>(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostOAuth2RefreshTokenResult>;\n\t}\n\n\t/**\n\t * Fetches the bearer token for the current application\n\t *\n\t * @remarks\n\t * This is primarily used for testing purposes\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#client-credentials-grant}\n\t * @param body - The options for the client credentials grant request\n\t * @param options - The options for the client credentials grant request\n\t */\n\tpublic async getToken(\n\t\tbody: RESTPostOAuth2ClientCredentialsURLEncodedData,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.oauth2TokenExchange(), {\n\t\t\tbody: makeURLSearchParams(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostOAuth2ClientCredentialsResult>;\n\t}\n\n\t/**\n\t * Fetches the current bot's application information\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information}\n\t * @param options - The options for the current bot application information request\n\t */\n\tpublic async getCurrentBotApplicationInformation({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.oauth2CurrentApplication(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIOAuth2CurrentApplicationResult>;\n\t}\n\n\t/**\n\t * Fetches the current authorization information\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#get-current-authorization-information}\n\t * @param options - The options for the current authorization information request\n\t */\n\tpublic async getCurrentAuthorizationInformation({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.oauth2CurrentAuthorization(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIOAuth2CurrentAuthorizationResult>;\n\t}\n\n\t/**\n\t * Revokes an OAuth2 token\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-token-revocation-example}\n\t * @param applicationId - The application id\n\t * @param applicationSecret - The application secret\n\t * @param body - The body of the token revocation request\n\t * @param options - The options for the token revocation request\n\t */\n\tpublic async revokeToken(\n\t\tapplicationId: Snowflake,\n\t\tapplicationSecret: string,\n\t\tbody: RESTPostOAuth2TokenRevocationQuery,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.oauth2TokenRevocation(), {\n\t\t\tbody: makeURLSearchParams(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Basic ${btoa(`${applicationId}:${applicationSecret}`)}`,\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t});\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIPollAnswerVotersQuery,\n\ttype RESTGetAPIPollAnswerVotersResult,\n\ttype RESTPostAPIPollExpireResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class PollAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Gets the list of users that voted for a specific answer in a poll\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/poll#get-answer-voters}\n\t * @param channelId - The id of the channel containing the message\n\t * @param messageId - The id of the message containing the poll\n\t * @param answerId - The id of the answer to get voters for\n\t * @param query - The query for getting the list of voters\n\t * @param options - The options for getting the list of voters\n\t */\n\tpublic async getAnswerVoters(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\tanswerId: number,\n\t\tquery: RESTGetAPIPollAnswerVotersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.pollAnswerVoters(channelId, messageId, answerId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPIPollAnswerVotersResult>;\n\t}\n\n\t/**\n\t * Immediately expires (i.e. ends) a poll\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/poll#expire-poll}\n\t * @param channelId - The id of the channel containing the message\n\t * @param messageId - The id of the message containing the poll\n\t * @param options - The options for expiring the poll\n\t */\n\tpublic async expirePoll(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.expirePoll(channelId, messageId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIPollExpireResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIApplicationRoleConnectionMetadataResult,\n\ttype RESTPutAPIApplicationRoleConnectionMetadataResult,\n\ttype RESTPutAPIApplicationRoleConnectionMetadataJSONBody,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class RoleConnectionsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Gets the role connection metadata records for the application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records}\n\t * @param applicationId - The id of the application to get role connection metadata records for\n\t * @param options - The options for fetching the role connection metadata records\n\t */\n\tpublic async getMetadataRecords(\n\t\tapplicationId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationRoleConnectionMetadata(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationRoleConnectionMetadataResult>;\n\t}\n\n\t/**\n\t * Updates the role connection metadata records for the application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records}\n\t * @param applicationId - The id of the application to update role connection metadata records for\n\t * @param body - The new role connection metadata records\n\t * @param options - The options for updating the role connection metadata records\n\t */\n\tpublic async updateMetadataRecords(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPutAPIApplicationRoleConnectionMetadataJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationRoleConnectionMetadata(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationRoleConnectionMetadataResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport { Routes, type RESTGetAPISoundboardDefaultSoundsResult } from 'discord-api-types/v10';\n\nexport class SoundboardSoundsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches all the soundboard default sounds.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#list-default-soundboard-sounds}\n\t * @param options - The options for fetching the soundboard default sounds.\n\t */\n\tpublic async getSoundboardDefaultSounds({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.soundboardDefaultSounds(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPISoundboardDefaultSoundsResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\ttype Snowflake,\n\ttype RESTGetAPIStageInstanceResult,\n\ttype RESTPatchAPIStageInstanceJSONBody,\n\ttype RESTPatchAPIStageInstanceResult,\n\ttype RESTPostAPIStageInstanceJSONBody,\n\ttype RESTPostAPIStageInstanceResult,\n\tRoutes,\n} from 'discord-api-types/v10';\n\nexport class StageInstancesAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Creates a new stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#create-stage-instance}\n\t * @param body - The data for creating the new stage instance\n\t * @param options - The options for creating the new stage instance\n\t */\n\tpublic async create(\n\t\tbody: RESTPostAPIStageInstanceJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.stageInstances(), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIStageInstanceResult>;\n\t}\n\n\t/**\n\t * Fetches a stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#get-stage-instance}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for fetching the stage instance\n\t */\n\tpublic async get(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.stageInstance(channelId), { auth, signal }) as Promise<RESTGetAPIStageInstanceResult>;\n\t}\n\n\t/**\n\t * Edits a stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#modify-stage-instance}\n\t * @param channelId - The id of the channel\n\t * @param body - The new stage instance data\n\t * @param options - The options for editing the stage instance\n\t */\n\tpublic async edit(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPatchAPIStageInstanceJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.stageInstance(channelId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIStageInstanceResult>;\n\t}\n\n\t/**\n\t * Deletes a stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#delete-stage-instance}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for deleting the stage instance\n\t */\n\tpublic async delete(\n\t\tchannelId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.stageInstance(channelId), { auth, reason, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIStickerPackResult,\n\ttype RESTGetAPIStickerResult,\n\ttype RESTGetStickerPacksResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class StickersAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a sticker pack\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#get-sticker-pack}\n\t * @param packId - The id of the sticker pack\n\t * @param options - The options for fetching the sticker pack\n\t */\n\tpublic async getStickerPack(packId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.stickerPack(packId), { auth, signal }) as Promise<RESTGetAPIStickerPackResult>;\n\t}\n\n\t/**\n\t * Fetches all of the sticker packs\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#list-sticker-packs}\n\t * @param options - The options for fetching the sticker packs\n\t */\n\tpublic async getStickers({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.stickerPacks(), { auth, signal }) as Promise<RESTGetStickerPacksResult>;\n\t}\n\n\t/**\n\t * Fetches a sticker\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#get-sticker}\n\t * @param stickerId - The id of the sticker\n\t * @param options - The options for fetching the sticker\n\t */\n\tpublic async get(stickerId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.sticker(stickerId), { auth, signal }) as Promise<RESTGetAPIStickerResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIChannelThreadMemberQuery,\n\ttype RESTGetAPIChannelThreadMemberResult,\n\ttype RESTGetAPIChannelThreadMembersResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class ThreadsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Adds the current user to a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#join-thread}\n\t * @param threadId - The id of the thread to join\n\t * @param options - The options for joining the thread\n\t */\n\tpublic async join(threadId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.put(Routes.threadMembers(threadId, '@me'), { auth, signal });\n\t}\n\n\t/**\n\t * Adds a member to a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#add-thread-member}\n\t * @param threadId - The id of the thread to add the member to\n\t * @param userId - The id of the user to add to the thread\n\t * @param options - The options for adding the member to the thread\n\t */\n\tpublic async addMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.threadMembers(threadId, userId), { auth, signal });\n\t}\n\n\t/**\n\t * Removes the current user from a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#leave-thread}\n\t * @param threadId - The id of the thread to leave\n\t * @param options - The options for leaving the thread\n\t */\n\tpublic async leave(threadId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.delete(Routes.threadMembers(threadId, '@me'), { auth, signal });\n\t}\n\n\t/**\n\t * Removes a member from a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#remove-thread-member}\n\t * @param threadId - The id of the thread to remove the member from\n\t * @param userId - The id of the user to remove from the thread\n\t * @param options - The options for removing the member from the thread\n\t */\n\tpublic async removeMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.threadMembers(threadId, userId), { auth, signal });\n\t}\n\n\t/**\n\t * Fetches a member of a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-thread-member}\n\t * @param threadId - The id of the thread to fetch the member from\n\t * @param userId - The id of the user\n\t * @param query - The query for fetching the member\n\t * @param options - The options for fetching the member\n\t */\n\tpublic async getMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tquery: RESTGetAPIChannelThreadMemberQuery & { with_member: true },\n\t\toptions?: Pick<RequestData, 'auth' | 'signal'>,\n\t): Promise<Required<Pick<RESTGetAPIChannelThreadMemberResult, 'member'>> & RESTGetAPIChannelThreadMemberResult>;\n\n\t/**\n\t * Fetches a member of a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-thread-member}\n\t * @param threadId - The id of the thread to fetch the member from\n\t * @param userId - The id of the user\n\t * @param query - The query for fetching the member\n\t * @param options - The options for fetching the member\n\t */\n\tpublic async getMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tquery?: RESTGetAPIChannelThreadMemberQuery,\n\t\toptions?: Pick<RequestData, 'auth' | 'signal'>,\n\t): Promise<RESTGetAPIChannelThreadMemberResult>;\n\n\tpublic async getMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tquery: RESTGetAPIChannelThreadMemberQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.threadMembers(threadId, userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t});\n\t}\n\n\t/**\n\t * Fetches all members of a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-thread-members}\n\t * @param threadId - The id of the thread to fetch the members from\n\t * @param options - The options for fetching the members\n\t */\n\tpublic async getAllMembers(threadId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.threadMembers(threadId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelThreadMembersResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPICurrentUserApplicationRoleConnectionResult,\n\ttype RESTGetAPICurrentUserConnectionsResult,\n\ttype RESTGetAPICurrentUserGuildsQuery,\n\ttype RESTGetAPICurrentUserGuildsResult,\n\ttype RESTGetAPICurrentUserResult,\n\ttype RESTGetAPIUserResult,\n\ttype RESTGetCurrentUserGuildMemberResult,\n\ttype RESTPatchAPICurrentGuildMemberJSONBody,\n\ttype RESTPatchAPICurrentUserJSONBody,\n\ttype RESTPatchAPICurrentUserResult,\n\ttype RESTPatchAPIGuildMemberResult,\n\ttype RESTPostAPICurrentUserCreateDMChannelResult,\n\ttype RESTPutAPICurrentUserApplicationRoleConnectionJSONBody,\n\ttype RESTPutAPICurrentUserApplicationRoleConnectionResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class UsersAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a user by their id\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-user}\n\t * @param userId - The id of the user to fetch\n\t * @param options - The options for fetching the user\n\t */\n\tpublic async get(userId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.user(userId), { auth, signal }) as Promise<RESTGetAPIUserResult>;\n\t}\n\n\t/**\n\t * Returns the user object of the requester's account\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-current-user}\n\t * @param options - The options for fetching the current user\n\t */\n\tpublic async getCurrent({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.user('@me'), { auth, signal }) as Promise<RESTGetAPICurrentUserResult>;\n\t}\n\n\t/**\n\t * Returns a list of partial guild objects the current user is a member of\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-current-user-guilds}\n\t * @param query - The query options for fetching the current user's guilds\n\t * @param options - The options for fetching the guilds\n\t */\n\tpublic async getGuilds(\n\t\tquery: RESTGetAPICurrentUserGuildsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.userGuilds(), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPICurrentUserGuildsResult>;\n\t}\n\n\t/**\n\t * Leaves the guild with the given id\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#leave-guild}\n\t * @param guildId - The id of the guild\n\t * @param options - The options for leaving the guild\n\t */\n\tpublic async leaveGuild(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.delete(Routes.userGuild(guildId), { auth, signal });\n\t}\n\n\t/**\n\t * Edits the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#modify-current-user}\n\t * @param body - The new data for the current user\n\t * @param options - The options for editing the user\n\t */\n\tpublic async edit(\n\t\tbody: RESTPatchAPICurrentUserJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.user('@me'), { auth, body, signal }) as Promise<RESTPatchAPICurrentUserResult>;\n\t}\n\n\t/**\n\t * Fetches the guild member for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-current-user-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param options - The options for fetching the guild member\n\t */\n\tpublic async getGuildMember(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.userGuildMember(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetCurrentUserGuildMemberResult>;\n\t}\n\n\t/**\n\t * Edits the guild member for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}\n\t * @param guildId - The id of the guild\n\t * @param body - The new data for the guild member\n\t * @param options - The options for editing the guild member\n\t */\n\tpublic async editCurrentGuildMember(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPICurrentGuildMemberJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildMember(guildId, '@me'), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Opens a new DM channel with a user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#create-dm}\n\t * @param userId - The id of the user to open a DM channel with\n\t * @param options - The options for opening the DM\n\t */\n\tpublic async createDM(userId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.post(Routes.userChannels(), {\n\t\t\tauth,\n\t\t\tbody: { recipient_id: userId },\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPICurrentUserCreateDMChannelResult>;\n\t}\n\n\t/**\n\t * Gets the current user's connections\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-user-connections}\n\t * @param options - The options for fetching the user's connections\n\t */\n\tpublic async getConnections({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.userConnections(), { auth, signal }) as Promise<RESTGetAPICurrentUserConnectionsResult>;\n\t}\n\n\t/**\n\t * Gets the current user's active application role connection\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-user-application-role-connection}\n\t * @param applicationId - The id of the application\n\t * @param options - The options for fetching the role connections\n\t */\n\tpublic async getApplicationRoleConnection(\n\t\tapplicationId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.userApplicationRoleConnection(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPICurrentUserApplicationRoleConnectionResult>;\n\t}\n\n\t/**\n\t * Updates the current user's application role connection\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#update-user-application-role-connection}\n\t * @param applicationId - The id of the application\n\t * @param body - The data for updating the application role connection\n\t * @param options - The options for updating the application role connection\n\t */\n\tpublic async updateApplicationRoleConnection(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPutAPICurrentUserApplicationRoleConnectionJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.userApplicationRoleConnection(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPICurrentUserApplicationRoleConnectionResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype Snowflake,\n\ttype RESTGetAPIVoiceRegionsResult,\n\ttype RESTGetAPIGuildVoiceStateUserResult,\n\ttype RESTGetAPIGuildVoiceStateCurrentMemberResult,\n\ttype RESTPatchAPIGuildVoiceStateUserJSONBody,\n\ttype RESTPatchAPIGuildVoiceStateCurrentMemberResult,\n\ttype RESTPatchAPIGuildVoiceStateCurrentMemberJSONBody,\n\ttype RESTPatchAPIGuildVoiceStateUserResult,\n} from 'discord-api-types/v10';\n\nexport class VoiceAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches all voice regions\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#list-voice-regions}\n\t * @param options - The options for fetching the voice regions\n\t */\n\tpublic async getVoiceRegions({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.voiceRegions(), { auth, signal }) as Promise<RESTGetAPIVoiceRegionsResult>;\n\t}\n\n\t/**\n\t * Fetches voice state of a user by their id\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#get-user-voice-state}\n\t * @param options - The options for fetching user voice state\n\t */\n\tpublic async getUserVoiceState(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildVoiceState(guildId, userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildVoiceStateUserResult>;\n\t}\n\n\t/**\n\t * Fetches the current user's voice state\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#get-current-user-voice-state}\n\t * @param options - The options for fetching user voice state\n\t */\n\tpublic async getVoiceState(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildVoiceState(guildId, '@me'), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildVoiceStateCurrentMemberResult>;\n\t}\n\n\t/**\n\t * Edits a user's voice state in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#modify-user-voice-state}\n\t * @param guildId - The id of the guild to edit the current user's voice state in\n\t * @param userId - The id of the user to edit the voice state for\n\t * @param body - The data for editing the voice state\n\t * @param options - The options for editing the voice state\n\t */\n\tpublic async editUserVoiceState(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPatchAPIGuildVoiceStateUserJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildVoiceState(guildId, userId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildVoiceStateUserResult>;\n\t}\n\n\t/**\n\t * Edits the voice state for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#modify-current-user-voice-state}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for editing the voice state\n\t * @param options - The options for editing the voice state\n\t */\n\tpublic async editVoiceState(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildVoiceStateCurrentMemberJSONBody = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildVoiceState(guildId, '@me'), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildVoiceStateCurrentMemberResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type RawFile, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIWebhookWithTokenMessageQuery,\n\ttype RESTGetAPIWebhookWithTokenMessageResult,\n\ttype RESTGetAPIWebhookResult,\n\ttype RESTPatchAPIWebhookJSONBody,\n\ttype RESTPatchAPIWebhookResult,\n\ttype RESTPatchAPIWebhookWithTokenMessageJSONBody,\n\ttype RESTPatchAPIWebhookWithTokenMessageQuery,\n\ttype RESTPatchAPIWebhookWithTokenMessageResult,\n\ttype RESTPostAPIWebhookWithTokenGitHubQuery,\n\ttype RESTPostAPIWebhookWithTokenJSONBody,\n\ttype RESTPostAPIWebhookWithTokenQuery,\n\ttype RESTPostAPIWebhookWithTokenSlackQuery,\n\ttype RESTPostAPIWebhookWithTokenWaitResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport type CreateWebhookMessageOptions = RESTPostAPIWebhookWithTokenJSONBody &\n\tRESTPostAPIWebhookWithTokenQuery & { files?: RawFile[] };\n\nexport type EditWebhookMessageOptions = RESTPatchAPIWebhookWithTokenMessageJSONBody &\n\tRESTPatchAPIWebhookWithTokenMessageQuery & {\n\t\tfiles?: RawFile[];\n\t};\n\nexport class WebhooksAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook}\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook-with-token}\n\t * @param id - The id of the webhook\n\t * @param options - The options for fetching the webhook\n\t */\n\tpublic async get(\n\t\tid: Snowflake,\n\t\t{ token, signal }: Pick<RequestData, 'signal'> & { token?: string | undefined } = {},\n\t) {\n\t\treturn this.rest.get(Routes.webhook(id, token), {\n\t\t\tsignal,\n\t\t\tauth: !token,\n\t\t}) as Promise<RESTGetAPIWebhookResult>;\n\t}\n\n\t/**\n\t * Edits a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#modify-webhook}\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token}\n\t * @param id - The id of the webhook to edit\n\t * @param body - The new webhook data\n\t * @param options - The options for editing the webhook\n\t */\n\tpublic async edit(\n\t\tid: Snowflake,\n\t\tbody: RESTPatchAPIWebhookJSONBody,\n\t\t{ token, reason, signal }: Pick<RequestData, 'reason' | 'signal'> & { token?: string | undefined } = {},\n\t) {\n\t\treturn this.rest.patch(Routes.webhook(id, token), {\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\tauth: !token,\n\t\t}) as Promise<RESTPatchAPIWebhookResult>;\n\t}\n\n\t/**\n\t * Deletes a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook}\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook-with-token}\n\t * @param id - The id of the webhook to delete\n\t * @param options - The options for deleting the webhook\n\t */\n\tpublic async delete(\n\t\tid: Snowflake,\n\t\t{ token, reason, signal }: Pick<RequestData, 'reason' | 'signal'> & { token?: string | undefined } = {},\n\t) {\n\t\tawait this.rest.delete(Routes.webhook(id, token), {\n\t\t\treason,\n\t\t\tsignal,\n\t\t\tauth: !token,\n\t\t});\n\t}\n\n\t/**\n\t * Executes a webhook and returns the created message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async execute(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: CreateWebhookMessageOptions & { wait: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIWebhookWithTokenWaitResult>;\n\n\t/**\n\t * Executes a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async execute(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: CreateWebhookMessageOptions & { wait?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<void>;\n\n\t/**\n\t * Executes a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async execute(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\t{ wait, thread_id, with_components, files, ...body }: CreateWebhookMessageOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.webhook(id, token), {\n\t\t\tquery: makeURLSearchParams({ wait, thread_id, with_components }),\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIWebhookWithTokenWaitResult | void>;\n\t}\n\n\t/**\n\t * Executes a slack webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-slackcompatible-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param query - The query options for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async executeSlack(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: unknown,\n\t\tquery: RESTPostAPIWebhookWithTokenSlackQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.webhookPlatform(id, token, 'slack'), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tbody,\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Executes a github webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-githubcompatible-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param query - The options for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async executeGitHub(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: unknown,\n\t\tquery: RESTPostAPIWebhookWithTokenGitHubQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.webhookPlatform(id, token, 'github'), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\tauth: false,\n\t\t});\n\t}\n\n\t/**\n\t * Fetches an associated message from a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook-message}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param messageId - The id of the message to fetch\n\t * @param query - The query options for fetching the message\n\t * @param options - The options for fetching the message\n\t */\n\tpublic async getMessage(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tmessageId: Snowflake,\n\t\tquery: RESTGetAPIWebhookWithTokenMessageQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.webhookMessage(id, token, messageId), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIWebhookWithTokenMessageResult>;\n\t}\n\n\t/**\n\t * Edits an associated message from a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#edit-webhook-message}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param messageId - The id of the message to edit\n\t * @param body - The data for editing the message\n\t * @param options - The options for editing the message\n\t */\n\tpublic async editMessage(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tmessageId: Snowflake,\n\t\t{ thread_id, with_components, files, ...body }: EditWebhookMessageOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.webhookMessage(id, token, messageId), {\n\t\t\tquery: makeURLSearchParams({ thread_id, with_components }),\n\t\t\tauth: false,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\tfiles,\n\t\t}) as Promise<RESTPatchAPIWebhookWithTokenMessageResult>;\n\t}\n\n\t/**\n\t * Deletes an associated message from a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook-message}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param messageId - The id of the message to delete\n\t * @param query - The options for deleting the message\n\t * @param options - The options for deleting the message\n\t */\n\tpublic async deleteMessage(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tmessageId: Snowflake,\n\t\tquery: { thread_id?: Snowflake } = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.webhookMessage(id, token, messageId), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t});\n\t}\n}\n","import type { REST } from '@discordjs/rest';\nimport { ApplicationCommandsAPI } from './applicationCommands.js';\nimport { ApplicationsAPI } from './applications.js';\nimport { ChannelsAPI } from './channel.js';\nimport { GatewayAPI } from './gateway.js';\nimport { GuildsAPI } from './guild.js';\nimport { InteractionsAPI } from './interactions.js';\nimport { InvitesAPI } from './invite.js';\nimport { MonetizationAPI } from './monetization.js';\nimport { OAuth2API } from './oauth2.js';\nimport { PollAPI } from './poll.js';\nimport { RoleConnectionsAPI } from './roleConnections.js';\nimport { SoundboardSoundsAPI } from './soundboardSounds.js';\nimport { StageInstancesAPI } from './stageInstances.js';\nimport { StickersAPI } from './sticker.js';\nimport { ThreadsAPI } from './thread.js';\nimport { UsersAPI } from './user.js';\nimport { VoiceAPI } from './voice.js';\nimport { WebhooksAPI } from './webhook.js';\n\nexport * from './applicationCommands.js';\nexport * from './applications.js';\nexport * from './channel.js';\nexport * from './gateway.js';\nexport * from './guild.js';\nexport * from './interactions.js';\nexport * from './invite.js';\nexport * from './monetization.js';\nexport * from './oauth2.js';\nexport * from './poll.js';\nexport * from './roleConnections.js';\nexport * from './soundboardSounds.js';\nexport * from './stageInstances.js';\nexport * from './sticker.js';\nexport * from './thread.js';\nexport * from './user.js';\nexport * from './voice.js';\nexport * from './webhook.js';\n\nexport class API {\n\tpublic readonly applicationCommands: ApplicationCommandsAPI;\n\n\tpublic readonly applications: ApplicationsAPI;\n\n\tpublic readonly channels: ChannelsAPI;\n\n\tpublic readonly gateway: GatewayAPI;\n\n\tpublic readonly guilds: GuildsAPI;\n\n\tpublic readonly interactions: InteractionsAPI;\n\n\tpublic readonly invites: InvitesAPI;\n\n\tpublic readonly monetization: MonetizationAPI;\n\n\tpublic readonly oauth2: OAuth2API;\n\n\tpublic readonly poll: PollAPI;\n\n\tpublic readonly roleConnections: RoleConnectionsAPI;\n\n\tpublic readonly soundboardSounds: SoundboardSoundsAPI;\n\n\tpublic readonly stageInstances: StageInstancesAPI;\n\n\tpublic readonly stickers: StickersAPI;\n\n\tpublic readonly threads: ThreadsAPI;\n\n\tpublic readonly users: UsersAPI;\n\n\tpublic readonly voice: VoiceAPI;\n\n\tpublic readonly webhooks: WebhooksAPI;\n\n\tpublic constructor(public readonly rest: REST) {\n\t\tthis.applicationCommands = new ApplicationCommandsAPI(rest);\n\t\tthis.applications = new ApplicationsAPI(rest);\n\t\tthis.channels = new ChannelsAPI(rest);\n\t\tthis.gateway = new GatewayAPI(rest);\n\t\tthis.guilds = new GuildsAPI(rest);\n\t\tthis.invites = new InvitesAPI(rest);\n\t\tthis.monetization = new MonetizationAPI(rest);\n\t\tthis.oauth2 = new OAuth2API(rest);\n\t\tthis.poll = new PollAPI(rest);\n\t\tthis.roleConnections = new RoleConnectionsAPI(rest);\n\t\tthis.soundboardSounds = new SoundboardSoundsAPI(rest);\n\t\tthis.stageInstances = new StageInstancesAPI(rest);\n\t\tthis.stickers = new StickersAPI(rest);\n\t\tthis.threads = new ThreadsAPI(rest);\n\t\tthis.users = new UsersAPI(rest);\n\t\tthis.voice = new VoiceAPI(rest);\n\t\tthis.webhooks = new WebhooksAPI(rest);\n\t\tthis.interactions = new InteractionsAPI(rest, this.webhooks);\n\t}\n}\n","import type { REST } from '@discordjs/rest';\nimport { calculateShardId, GatewayRateLimitError } from '@discordjs/util';\nimport { WebSocketShardEvents } from '@discordjs/ws';\nimport { DiscordSnowflake } from '@sapphire/snowflake';\nimport { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';\nimport {\n\tGatewayDispatchEvents,\n\tGatewayOpcodes,\n\ttype GatewayApplicationCommandPermissionsUpdateDispatchData,\n\ttype GatewayAutoModerationActionExecutionDispatchData,\n\ttype GatewayAutoModerationRuleCreateDispatchData,\n\ttype GatewayAutoModerationRuleDeleteDispatchData,\n\ttype GatewayAutoModerationRuleUpdateDispatchData,\n\ttype GatewayChannelCreateDispatchData,\n\ttype GatewayChannelDeleteDispatchData,\n\ttype GatewayChannelPinsUpdateDispatchData,\n\ttype GatewayChannelUpdateDispatchData,\n\ttype GatewayEntitlementCreateDispatchData,\n\ttype GatewayEntitlementDeleteDispatchData,\n\ttype GatewayEntitlementUpdateDispatchData,\n\ttype GatewayGuildAuditLogEntryCreateDispatchData,\n\ttype GatewayGuildBanAddDispatchData,\n\ttype GatewayGuildBanRemoveDispatchData,\n\ttype GatewayGuildCreateDispatchData,\n\ttype GatewayGuildDeleteDispatchData,\n\ttype GatewayGuildEmojisUpdateDispatchData,\n\ttype GatewayGuildIntegrationsUpdateDispatchData,\n\ttype GatewayGuildMemberAddDispatchData,\n\ttype GatewayGuildMemberRemoveDispatchData,\n\ttype GatewayGuildMemberUpdateDispatchData,\n\ttype GatewayGuildMembersChunkDispatchData,\n\ttype GatewayGuildRoleCreateDispatchData,\n\ttype GatewayGuildRoleDeleteDispatchData,\n\ttype GatewayGuildRoleUpdateDispatchData,\n\ttype GatewayGuildScheduledEventCreateDispatchData,\n\ttype GatewayGuildScheduledEventDeleteDispatchData,\n\ttype GatewayGuildScheduledEventUpdateDispatchData,\n\ttype GatewayGuildScheduledEventUserAddDispatchData,\n\ttype GatewayGuildScheduledEventUserRemoveDispatchData,\n\ttype GatewayGuildSoundboardSoundCreateDispatch,\n\ttype GatewayGuildSoundboardSoundDeleteDispatch,\n\ttype GatewayGuildSoundboardSoundUpdateDispatch,\n\ttype GatewayGuildSoundboardSoundsUpdateDispatch,\n\ttype GatewayGuildStickersUpdateDispatchData,\n\ttype GatewayGuildUpdateDispatchData,\n\ttype GatewayIntegrationCreateDispatchData,\n\ttype GatewayIntegrationDeleteDispatchData,\n\ttype GatewayIntegrationUpdateDispatchData,\n\ttype GatewayInteractionCreateDispatchData,\n\ttype GatewayInviteCreateDispatchData,\n\ttype GatewayInviteDeleteDispatchData,\n\ttype GatewayMessageCreateDispatchData,\n\ttype GatewayMessageDeleteBulkDispatchData,\n\ttype GatewayMessageDeleteDispatchData,\n\ttype GatewayMessagePollVoteDispatchData,\n\ttype GatewayMessageReactionAddDispatchData,\n\ttype GatewayMessageReactionRemoveAllDispatchData,\n\ttype GatewayMessageReactionRemoveDispatchData,\n\ttype GatewayMessageReactionRemoveEmojiDispatchData,\n\ttype GatewayMessageUpdateDispatchData,\n\ttype GatewayPresenceUpdateData,\n\ttype GatewayPresenceUpdateDispatchData,\n\ttype GatewayRateLimitedDispatchData,\n\ttype GatewayReadyDispatchData,\n\ttype GatewayRequestGuildMembersData,\n\ttype GatewayStageInstanceCreateDispatchData,\n\ttype GatewayStageInstanceDeleteDispatchData,\n\ttype GatewayStageInstanceUpdateDispatchData,\n\ttype GatewaySubscriptionCreateDispatchData,\n\ttype GatewaySubscriptionDeleteDispatchData,\n\ttype GatewaySubscriptionUpdateDispatchData,\n\ttype GatewayThreadCreateDispatchData,\n\ttype GatewayThreadDeleteDispatchData,\n\ttype GatewayThreadListSyncDispatchData,\n\ttype GatewayThreadMemberUpdateDispatchData,\n\ttype GatewayThreadMembersUpdateDispatchData,\n\ttype GatewayThreadUpdateDispatchData,\n\ttype GatewayTypingStartDispatchData,\n\ttype GatewayUserUpdateDispatchData,\n\ttype GatewayVoiceServerUpdateDispatchData,\n\ttype GatewayVoiceStateUpdateData,\n\ttype GatewayVoiceStateUpdateDispatchData,\n\ttype GatewayWebhooksUpdateDispatchData,\n\ttype GatewayRequestSoundboardSoundsData,\n\ttype GatewaySoundboardSoundsDispatchData,\n} from 'discord-api-types/v10';\nimport type { Gateway } from './Gateway.js';\nimport { API } from './api/index.js';\n\nexport interface IntrinsicProps {\n\t/**\n\t * The REST API\n\t */\n\tapi: API;\n\t/**\n\t * The id of the shard that emitted the event\n\t */\n\tshardId: number;\n}\n\nexport interface ToEventProps<Data> extends IntrinsicProps {\n\tdata: Data;\n}\n\nexport interface MappedEvents {\n\t[GatewayDispatchEvents.ApplicationCommandPermissionsUpdate]: [\n\t\tToEventProps<GatewayApplicationCommandPermissionsUpdateDispatchData>,\n\t];\n\t[GatewayDispatchEvents.AutoModerationActionExecution]: [\n\t\tToEventProps<GatewayAutoModerationActionExecutionDispatchData>,\n\t];\n\t[GatewayDispatchEvents.AutoModerationRuleCreate]: [ToEventProps<GatewayAutoModerationRuleCreateDispatchData>];\n\t[GatewayDispatchEvents.AutoModerationRuleDelete]: [ToEventProps<GatewayAutoModerationRuleDeleteDispatchData>];\n\t[GatewayDispatchEvents.AutoModerationRuleUpdate]: [ToEventProps<GatewayAutoModerationRuleUpdateDispatchData>];\n\t[GatewayDispatchEvents.ChannelCreate]: [ToEventProps<GatewayChannelCreateDispatchData>];\n\t[GatewayDispatchEvents.ChannelDelete]: [ToEventProps<GatewayChannelDeleteDispatchData>];\n\t[GatewayDispatchEvents.ChannelPinsUpdate]: [ToEventProps<GatewayChannelPinsUpdateDispatchData>];\n\t[GatewayDispatchEvents.ChannelUpdate]: [ToEventProps<GatewayChannelUpdateDispatchData>];\n\t[GatewayDispatchEvents.EntitlementCreate]: [ToEventProps<GatewayEntitlementCreateDispatchData>];\n\t[GatewayDispatchEvents.EntitlementDelete]: [ToEventProps<GatewayEntitlementDeleteDispatchData>];\n\t[GatewayDispatchEvents.EntitlementUpdate]: [ToEventProps<GatewayEntitlementUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildAuditLogEntryCreate]: [ToEventProps<GatewayGuildAuditLogEntryCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildBanAdd]: [ToEventProps<GatewayGuildBanAddDispatchData>];\n\t[GatewayDispatchEvents.GuildBanRemove]: [ToEventProps<GatewayGuildBanRemoveDispatchData>];\n\t[GatewayDispatchEvents.GuildCreate]: [ToEventProps<GatewayGuildCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildDelete]: [ToEventProps<GatewayGuildDeleteDispatchData>];\n\t[GatewayDispatchEvents.GuildEmojisUpdate]: [ToEventProps<GatewayGuildEmojisUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildIntegrationsUpdate]: [ToEventProps<GatewayGuildIntegrationsUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildMemberAdd]: [ToEventProps<GatewayGuildMemberAddDispatchData>];\n\t[GatewayDispatchEvents.GuildMemberRemove]: [ToEventProps<GatewayGuildMemberRemoveDispatchData>];\n\t[GatewayDispatchEvents.GuildMemberUpdate]: [ToEventProps<GatewayGuildMemberUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildMembersChunk]: [ToEventProps<GatewayGuildMembersChunkDispatchData>];\n\t[GatewayDispatchEvents.GuildRoleCreate]: [ToEventProps<GatewayGuildRoleCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildRoleDelete]: [ToEventProps<GatewayGuildRoleDeleteDispatchData>];\n\t[GatewayDispatchEvents.GuildRoleUpdate]: [ToEventProps<GatewayGuildRoleUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventCreate]: [ToEventProps<GatewayGuildScheduledEventCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventDelete]: [ToEventProps<GatewayGuildScheduledEventDeleteDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventUpdate]: [ToEventProps<GatewayGuildScheduledEventUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventUserAdd]: [ToEventProps<GatewayGuildScheduledEventUserAddDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventUserRemove]: [\n\t\tToEventProps<GatewayGuildScheduledEventUserRemoveDispatchData>,\n\t];\n\t[GatewayDispatchEvents.GuildSoundboardSoundCreate]: [ToEventProps<GatewayGuildSoundboardSoundCreateDispatch>];\n\t[GatewayDispatchEvents.GuildSoundboardSoundDelete]: [ToEventProps<GatewayGuildSoundboardSoundDeleteDispatch>];\n\t[GatewayDispatchEvents.GuildSoundboardSoundUpdate]: [ToEventProps<GatewayGuildSoundboardSoundUpdateDispatch>];\n\t[GatewayDispatchEvents.GuildSoundboardSoundsUpdate]: [ToEventProps<GatewayGuildSoundboardSoundsUpdateDispatch>];\n\t[GatewayDispatchEvents.SoundboardSounds]: [ToEventProps<GatewaySoundboardSoundsDispatchData>];\n\t[GatewayDispatchEvents.GuildStickersUpdate]: [ToEventProps<GatewayGuildStickersUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildUpdate]: [ToEventProps<GatewayGuildUpdateDispatchData>];\n\t[GatewayDispatchEvents.IntegrationCreate]: [ToEventProps<GatewayIntegrationCreateDispatchData>];\n\t[GatewayDispatchEvents.IntegrationDelete]: [ToEventProps<GatewayIntegrationDeleteDispatchData>];\n\t[GatewayDispatchEvents.IntegrationUpdate]: [ToEventProps<GatewayIntegrationUpdateDispatchData>];\n\t[GatewayDispatchEvents.InteractionCreate]: [ToEventProps<GatewayInteractionCreateDispatchData>];\n\t[GatewayDispatchEvents.InviteCreate]: [ToEventProps<GatewayInviteCreateDispatchData>];\n\t[GatewayDispatchEvents.InviteDelete]: [ToEventProps<GatewayInviteDeleteDispatchData>];\n\t[GatewayDispatchEvents.MessageCreate]: [ToEventProps<GatewayMessageCreateDispatchData>];\n\t[GatewayDispatchEvents.MessageDelete]: [ToEventProps<GatewayMessageDeleteDispatchData>];\n\t[GatewayDispatchEvents.MessageDeleteBulk]: [ToEventProps<GatewayMessageDeleteBulkDispatchData>];\n\t[GatewayDispatchEvents.MessagePollVoteAdd]: [ToEventProps<GatewayMessagePollVoteDispatchData>];\n\t[GatewayDispatchEvents.MessagePollVoteRemove]: [ToEventProps<GatewayMessagePollVoteDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionAdd]: [ToEventProps<GatewayMessageReactionAddDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionRemove]: [ToEventProps<GatewayMessageReactionRemoveDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionRemoveAll]: [ToEventProps<GatewayMessageReactionRemoveAllDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionRemoveEmoji]: [ToEventProps<GatewayMessageReactionRemoveEmojiDispatchData>];\n\t[GatewayDispatchEvents.MessageUpdate]: [ToEventProps<GatewayMessageUpdateDispatchData>];\n\t[GatewayDispatchEvents.PresenceUpdate]: [ToEventProps<GatewayPresenceUpdateDispatchData>];\n\t[GatewayDispatchEvents.RateLimited]: [ToEventProps<GatewayRateLimitedDispatchData>];\n\t[GatewayDispatchEvents.Ready]: [ToEventProps<GatewayReadyDispatchData>];\n\t[GatewayDispatchEvents.Resumed]: [ToEventProps<never>];\n\t[GatewayDispatchEvents.StageInstanceCreate]: [ToEventProps<GatewayStageInstanceCreateDispatchData>];\n\t[GatewayDispatchEvents.StageInstanceDelete]: [ToEventProps<GatewayStageInstanceDeleteDispatchData>];\n\t[GatewayDispatchEvents.StageInstanceUpdate]: [ToEventProps<GatewayStageInstanceUpdateDispatchData>];\n\t[GatewayDispatchEvents.SubscriptionCreate]: [ToEventProps<GatewaySubscriptionCreateDispatchData>];\n\t[GatewayDispatchEvents.SubscriptionDelete]: [ToEventProps<GatewaySubscriptionDeleteDispatchData>];\n\t[GatewayDispatchEvents.SubscriptionUpdate]: [ToEventProps<GatewaySubscriptionUpdateDispatchData>];\n\t[GatewayDispatchEvents.ThreadCreate]: [ToEventProps<GatewayThreadCreateDispatchData>];\n\t[GatewayDispatchEvents.ThreadDelete]: [ToEventProps<GatewayThreadDeleteDispatchData>];\n\t[GatewayDispatchEvents.ThreadListSync]: [ToEventProps<GatewayThreadListSyncDispatchData>];\n\t[GatewayDispatchEvents.ThreadMemberUpdate]: [ToEventProps<GatewayThreadMemberUpdateDispatchData>];\n\t[GatewayDispatchEvents.ThreadMembersUpdate]: [ToEventProps<GatewayThreadMembersUpdateDispatchData>];\n\t[GatewayDispatchEvents.ThreadUpdate]: [ToEventProps<GatewayThreadUpdateDispatchData>];\n\t[GatewayDispatchEvents.TypingStart]: [ToEventProps<GatewayTypingStartDispatchData>];\n\t[GatewayDispatchEvents.UserUpdate]: [ToEventProps<GatewayUserUpdateDispatchData>];\n\t[GatewayDispatchEvents.VoiceServerUpdate]: [ToEventProps<GatewayVoiceServerUpdateDispatchData>];\n\t[GatewayDispatchEvents.VoiceStateUpdate]: [ToEventProps<GatewayVoiceStateUpdateDispatchData>];\n\t[GatewayDispatchEvents.WebhooksUpdate]: [ToEventProps<GatewayWebhooksUpdateDispatchData>];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ManagerShardEventsMap extends MappedEvents {}\n\nexport interface ClientOptions {\n\tgateway: Gateway;\n\trest: REST;\n}\n\nexport interface RequestGuildMembersResult {\n\tmembers: GatewayGuildMembersChunkDispatchData['members'];\n\tnonce: NonNullable<GatewayGuildMembersChunkDispatchData['nonce']>;\n\tnotFound: NonNullable<GatewayGuildMembersChunkDispatchData['not_found']>;\n\tpresences: NonNullable<GatewayGuildMembersChunkDispatchData['presences']>;\n}\n\nfunction createTimer(controller: AbortController, timeout: number) {\n\treturn setTimeout(() => controller.abort(), timeout);\n}\n\nexport class Client extends AsyncEventEmitter<MappedEvents> {\n\tpublic readonly rest: REST;\n\n\tpublic readonly gateway: Gateway;\n\n\tpublic readonly api: API;\n\n\tpublic constructor(options: ClientOptions) {\n\t\tsuper();\n\t\tthis.rest = options.rest;\n\t\tthis.gateway = options.gateway;\n\t\tthis.api = new API(this.rest);\n\n\t\tthis.gateway.on(WebSocketShardEvents.Dispatch, (dispatch, shardId) => {\n\t\t\tthis.emit(dispatch.t, this.toEventProps(dispatch.d, shardId));\n\t\t});\n\t}\n\n\t/**\n\t * Requests guild members from the gateway and returns an async iterator that yields the data from each guild members chunk event.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-guild-members}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each guild members chunk event\n\t * @example\n\t * Requesting all members from a guild\n\t * ```ts\n\t * for await (const { members } of client.requestGuildMembersIterator({ guild_id: '1234567890', query: '', limit: 0 })) {\n\t * \tconsole.log(members);\n\t * }\n\t * ```\n\t */\n\tpublic async *requestGuildMembersIterator(options: GatewayRequestGuildMembersData, timeout = 10_000) {\n\t\tconst shardId = calculateShardId(options.guild_id, await this.gateway.getShardCount());\n\t\tconst nonce = options.nonce ?? DiscordSnowflake.generate().toString();\n\n\t\tconst controller = new AbortController();\n\n\t\tlet timer: NodeJS.Timeout | undefined = createTimer(controller, timeout);\n\n\t\tconst onRatelimit = ({ data }: ToEventProps<GatewayRateLimitedDispatchData>) => {\n\t\t\t// We could verify meta.guild_id === options.guild_id as well, but really, the nonce check is enough\n\t\t\tif (data.meta.nonce === nonce) {\n\t\t\t\tcontroller.abort(new GatewayRateLimitError(data, options));\n\t\t\t}\n\t\t};\n\n\t\tconst cleanup = () => {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\n\t\t\tthis.off(GatewayDispatchEvents.RateLimited, onRatelimit);\n\t\t};\n\n\t\tthis.on(GatewayDispatchEvents.RateLimited, onRatelimit);\n\t\tawait this.gateway.send(shardId, {\n\t\t\top: GatewayOpcodes.RequestGuildMembers,\n\t\t\t// eslint-disable-next-line id-length\n\t\t\td: {\n\t\t\t\t...options,\n\t\t\t\tnonce,\n\t\t\t},\n\t\t});\n\n\t\ttry {\n\t\t\tconst iterator = AsyncEventEmitter.on(this, GatewayDispatchEvents.GuildMembersChunk, {\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tfor await (const [{ data }] of iterator) {\n\t\t\t\tif (data.nonce !== nonce) continue;\n\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = undefined;\n\n\t\t\t\tyield {\n\t\t\t\t\tmembers: data.members,\n\t\t\t\t\tnonce,\n\t\t\t\t\tnotFound: data.not_found ?? null,\n\t\t\t\t\tpresences: data.presences ?? null,\n\t\t\t\t\tchunkIndex: data.chunk_index,\n\t\t\t\t\tchunkCount: data.chunk_count,\n\t\t\t\t};\n\n\t\t\t\tif (data.chunk_index >= data.chunk_count - 1) break;\n\n\t\t\t\t// eslint-disable-next-line require-atomic-updates\n\t\t\t\ttimer = createTimer(controller, timeout);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && error.name === 'AbortError') {\n\t\t\t\tif (error.cause instanceof GatewayRateLimitError) {\n\t\t\t\t\tthrow error.cause;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error('Request timed out');\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tcleanup();\n\t\t}\n\t}\n\n\t/**\n\t * Requests guild members from the gateway.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-guild-members}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each guild members chunk event\n\t * @example\n\t * Requesting specific members from a guild\n\t * ```ts\n\t * const { members } = await client.requestGuildMembers({ guild_id: '1234567890', user_ids: ['9876543210'] });\n\t * ```\n\t */\n\tpublic async requestGuildMembers(options: GatewayRequestGuildMembersData, timeout = 10_000) {\n\t\tconst members: RequestGuildMembersResult['members'] = [];\n\t\tconst notFound: RequestGuildMembersResult['notFound'] = [];\n\t\tconst presences: RequestGuildMembersResult['presences'] = [];\n\t\tconst nonce = options.nonce ?? DiscordSnowflake.generate().toString();\n\n\t\tfor await (const data of this.requestGuildMembersIterator({ ...options, nonce }, timeout)) {\n\t\t\tmembers.push(...data.members);\n\t\t\tif (data.presences) presences.push(...data.presences);\n\t\t\tif (data.notFound) notFound.push(...data.notFound);\n\t\t}\n\n\t\treturn { members, nonce, notFound, presences };\n\t}\n\n\t/**\n\t * Requests soundboard sounds from the gateway and returns an async iterator that yields the data from each soundboard sounds event.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each soundboard sounds\n\t * @example\n\t * Requesting soundboard sounds for specific guilds\n\t * ```ts\n\t * for await (const { guildId, soundboardSounds } of this.requestSoundboardSoundsIterator({\n\t *\tguild_ids: ['1234567890', '9876543210'],\n\t * })) {\n\t *\tconsole.log(`Soundboard sounds for guild ${guildId}:`, soundboardSounds);\n\t * }\n\t * ```\n\t */\n\tpublic async *requestSoundboardSoundsIterator(options: GatewayRequestSoundboardSoundsData, timeout = 10_000) {\n\t\tconst shardCount = await this.gateway.getShardCount();\n\t\tconst shardIds = Map.groupBy(options.guild_ids, (guildId) => calculateShardId(guildId, shardCount));\n\n\t\tconst controller = new AbortController();\n\n\t\tlet timer: NodeJS.Timeout | undefined = createTimer(controller, timeout);\n\n\t\tfor (const [shardId, guildIds] of shardIds) {\n\t\t\tawait this.gateway.send(shardId, {\n\t\t\t\top: GatewayOpcodes.RequestSoundboardSounds,\n\t\t\t\t// eslint-disable-next-line id-length\n\t\t\t\td: {\n\t\t\t\t\t...options,\n\t\t\t\t\tguild_ids: guildIds,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tconst iterator = AsyncEventEmitter.on(this, GatewayDispatchEvents.SoundboardSounds, {\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tconst guildIds = new Set(options.guild_ids);\n\n\t\t\tfor await (const [{ data }] of iterator) {\n\t\t\t\tif (!guildIds.has(data.guild_id)) continue;\n\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = undefined;\n\n\t\t\t\tyield {\n\t\t\t\t\tguildId: data.guild_id,\n\t\t\t\t\tsoundboardSounds: data.soundboard_sounds,\n\t\t\t\t};\n\n\t\t\t\tguildIds.delete(data.guild_id);\n\n\t\t\t\tif (guildIds.size === 0) break;\n\n\t\t\t\ttimer = createTimer(controller, timeout);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && error.name === 'AbortError') {\n\t\t\t\tthrow new Error('Request timed out');\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Requests soundboard sounds from the gateway.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each soundboard sounds event\n\t * @example\n\t * Requesting soundboard sounds for specific guilds\n\t * ```ts\n\t * const soundboardSounds = await client.requestSoundboardSounds({ guild_ids: ['1234567890', '9876543210'], });\n\t *\n\t * console.log(soundboardSounds.get('1234567890'));\n\t * ```\n\t */\n\tpublic async requestSoundboardSounds(options: GatewayRequestSoundboardSoundsData, timeout = 10_000) {\n\t\tconst soundboardSounds = new Map<\n\t\t\tGatewaySoundboardSoundsDispatchData['guild_id'],\n\t\t\tGatewaySoundboardSoundsDispatchData['soundboard_sounds']\n\t\t>();\n\n\t\tfor await (const data of this.requestSoundboardSoundsIterator(options, timeout)) {\n\t\t\tsoundboardSounds.set(data.guildId, data.soundboardSounds);\n\t\t}\n\n\t\treturn soundboardSounds;\n\t}\n\n\t/**\n\t * Updates the voice state of the bot user\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#update-voice-state}\n\t * @param options - The options for updating the voice state\n\t */\n\tpublic async updateVoiceState(options: GatewayVoiceStateUpdateData) {\n\t\tconst shardId = calculateShardId(options.guild_id, await this.gateway.getShardCount());\n\n\t\tawait this.gateway.send(shardId, {\n\t\t\top: GatewayOpcodes.VoiceStateUpdate,\n\t\t\t// eslint-disable-next-line id-length\n\t\t\td: options,\n\t\t});\n\t}\n\n\t/**\n\t * Updates the presence of the bot user\n\t *\n\t * @param shardId - The id of the shard to update the presence in\n\t * @param options - The options for updating the presence\n\t */\n\tpublic async updatePresence(shardId: number, options: GatewayPresenceUpdateData) {\n\t\tawait this.gateway.send(shardId, {\n\t\t\top: GatewayOpcodes.PresenceUpdate,\n\t\t\t// eslint-disable-next-line id-length\n\t\t\td: options,\n\t\t});\n\t}\n\n\tprivate toEventProps<ObjectType>(obj: ObjectType, shardId: number): ToEventProps<ObjectType> {\n\t\treturn {\n\t\t\tapi: this.api,\n\t\t\tshardId,\n\t\t\tdata: obj,\n\t\t};\n\t}\n}\n","import type { RawFile } from '@discordjs/rest';\nimport type { APIInteractionResponseCallbackData } from 'discord-api-types/v10';\n\nexport interface DescriptiveRawFile extends RawFile {\n\tdescription?: string;\n}\n\n/**\n * A utility function to create a form data payload given an array of file buffers\n *\n * @param files - The files to create a form data payload for\n * @param options - The additional options for the form data payload\n */\nexport function withFiles(files: DescriptiveRawFile[], options: APIInteractionResponseCallbackData) {\n\tconst body = {\n\t\t...options,\n\t\tattachments: files.map((file, index) => ({\n\t\t\tid: index.toString(),\n\t\t\tdescription: file.description,\n\t\t})),\n\t};\n\n\tconst outputFiles = files.map((file, index) => ({\n\t\tname: file.name ?? index.toString(),\n\t\tdata: file.data,\n\t}));\n\n\treturn { body, files: outputFiles };\n}\n"],"mappings":"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","names":["import_v10","import_rest","import_v10","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_v10","import_v10","import_v10","import_v10","import_rest","import_v10","import_rest","import_v10","import_v10","import_rest","import_v10","import_v10","import_util"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/api/applicationCommands.ts","../src/api/applications.ts","../src/api/channel.ts","../src/api/gateway.ts","../src/api/guild.ts","../src/api/interactions.ts","../src/api/invite.ts","../src/api/monetization.ts","../src/api/oauth2.ts","../src/api/poll.ts","../src/api/roleConnections.ts","../src/api/soundboardSounds.ts","../src/api/stageInstances.ts","../src/api/sticker.ts","../src/api/thread.ts","../src/api/user.ts","../src/api/voice.ts","../src/api/webhook.ts","../src/api/index.ts","../src/client.ts","../src/util/files.ts"],"sourcesContent":["export * from './api/index.js';\nexport * from './client.js';\nexport type * from './Gateway.js';\nexport * from './util/index.js';\n\nexport * from 'discord-api-types/v10';\n\nexport { GatewayRateLimitError } from '@discordjs/util';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/core#readme | @discordjs/core} version\n * that you are currently using.\n */\n// This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild\nexport const version = '3.0.0-pr-11005.1765538001-01ed3c43b' as string;\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIApplicationCommandPermissionsResult,\n\ttype RESTGetAPIApplicationCommandResult,\n\ttype RESTGetAPIApplicationCommandsQuery,\n\ttype RESTGetAPIApplicationCommandsResult,\n\ttype RESTGetAPIApplicationGuildCommandResult,\n\ttype RESTGetAPIApplicationGuildCommandsQuery,\n\ttype RESTGetAPIApplicationGuildCommandsResult,\n\ttype RESTGetAPIGuildApplicationCommandsPermissionsResult,\n\ttype RESTPatchAPIApplicationCommandJSONBody,\n\ttype RESTPatchAPIApplicationCommandResult,\n\ttype RESTPatchAPIApplicationGuildCommandJSONBody,\n\ttype RESTPatchAPIApplicationGuildCommandResult,\n\ttype RESTPostAPIApplicationCommandsJSONBody,\n\ttype RESTPostAPIApplicationCommandsResult,\n\ttype RESTPostAPIApplicationGuildCommandsJSONBody,\n\ttype RESTPostAPIApplicationGuildCommandsResult,\n\ttype RESTPutAPIApplicationCommandPermissionsJSONBody,\n\ttype RESTPutAPIApplicationCommandPermissionsResult,\n\ttype RESTPutAPIApplicationCommandsJSONBody,\n\ttype RESTPutAPIApplicationCommandsResult,\n\ttype RESTPutAPIApplicationGuildCommandsJSONBody,\n\ttype RESTPutAPIApplicationGuildCommandsResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class ApplicationCommandsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches all global commands for a application\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands}\n\t * @param applicationId - The application id to fetch commands for\n\t * @param query - The query options for fetching commands\n\t * @param options - The options for fetching commands\n\t */\n\tpublic async getGlobalCommands(\n\t\tapplicationId: Snowflake,\n\t\tquery: RESTGetAPIApplicationCommandsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationCommands(applicationId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationCommandsResult>;\n\t}\n\n\t/**\n\t * Creates a new global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#create-global-application-command}\n\t * @param applicationId - The application id to create the command for\n\t * @param body - The data for creating the command\n\t * @param options - The options for creating the command\n\t */\n\tpublic async createGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPostAPIApplicationCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.applicationCommands(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIApplicationCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches a global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-global-application-command}\n\t * @param applicationId - The application id to fetch the command from\n\t * @param commandId - The command id to fetch\n\t * @param options - The options for fetching the command\n\t */\n\tpublic async getGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationCommand(applicationId, commandId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationCommandResult>;\n\t}\n\n\t/**\n\t * Edits a global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param commandId - The id of the command to edit\n\t * @param body - The data for editing the command\n\t * @param options - The options for editing the command\n\t */\n\tpublic async editGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\tbody: RESTPatchAPIApplicationCommandJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.applicationCommand(applicationId, commandId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIApplicationCommandResult>;\n\t}\n\n\t/**\n\t * Deletes a global command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param commandId - The id of the command to delete\n\t * @param options - The options for deleting a command\n\t */\n\tpublic async deleteGlobalCommand(\n\t\tapplicationId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.applicationCommand(applicationId, commandId), { auth, signal });\n\t}\n\n\t/**\n\t * Overwrites global commands\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands}\n\t * @param applicationId - The application id to overwrite commands for\n\t * @param body - The data for overwriting commands\n\t * @param options - The options for overwriting commands\n\t */\n\tpublic async bulkOverwriteGlobalCommands(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPutAPIApplicationCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationCommands(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches all commands for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands}\n\t * @param applicationId - The application id to fetch commands for\n\t * @param guildId - The guild id to fetch commands for\n\t * @param query - The data for fetching commands\n\t * @param options - The options for fetching commands\n\t */\n\tpublic async getGuildCommands(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIApplicationGuildCommandsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationGuildCommands(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationGuildCommandsResult>;\n\t}\n\n\t/**\n\t * Creates a new command for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command}\n\t * @param applicationId - The application id to create the command for\n\t * @param guildId - The guild id to create the command for\n\t * @param body - The data for creating the command\n\t * @param options - The options for creating the command\n\t */\n\tpublic async createGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIApplicationGuildCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.applicationGuildCommands(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIApplicationGuildCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command}\n\t * @param applicationId - The application id to fetch the command from\n\t * @param guildId - The guild id to fetch the command from\n\t * @param commandId - The command id to fetch\n\t * @param options - The options for fetching the command\n\t */\n\tpublic async getGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationGuildCommand(applicationId, guildId, commandId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationGuildCommandResult>;\n\t}\n\n\t/**\n\t * Edits a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param guildId - The guild id of the command\n\t * @param commandId - The command id to edit\n\t * @param body - The data for editing the command\n\t * @param options - The options for editing the command\n\t */\n\tpublic async editGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\tbody: RESTPatchAPIApplicationGuildCommandJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.applicationGuildCommand(applicationId, guildId, commandId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIApplicationGuildCommandResult>;\n\t}\n\n\t/**\n\t * Deletes a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command}\n\t * @param applicationId - The application id of the command\n\t * @param guildId - The guild id of the command\n\t * @param commandId - The id of the command to delete\n\t * @param options - The options for deleting the command\n\t */\n\tpublic async deleteGuildCommand(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.applicationGuildCommand(applicationId, guildId, commandId), { auth, signal });\n\t}\n\n\t/**\n\t * Bulk overwrites guild commands\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands}\n\t * @param applicationId - The application id to overwrite commands for\n\t * @param guildId - The guild id to overwrite commands for\n\t * @param body - The data for overwriting commands\n\t * @param options - The options for overwriting the commands\n\t */\n\tpublic async bulkOverwriteGuildCommands(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tbody: RESTPutAPIApplicationGuildCommandsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationGuildCommands(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationGuildCommandsResult>;\n\t}\n\n\t/**\n\t * Fetches the permissions for a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command-permissions}\n\t * @param applicationId - The application id to get the permissions for\n\t * @param guildId - The guild id of the command\n\t * @param commandId - The command id to get the permissions for\n\t * @param options - The option for fetching the command\n\t */\n\tpublic async getGuildCommandPermissions(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationCommandPermissions(applicationId, guildId, commandId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationCommandPermissionsResult>;\n\t}\n\n\t/**\n\t * Fetches all permissions for all commands in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions}\n\t * @param applicationId - The application id to get the permissions for\n\t * @param guildId - The guild id to get the permissions for\n\t * @param options - The options for fetching permissions\n\t */\n\tpublic async getGuildCommandsPermissions(\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildApplicationCommandsPermissions(applicationId, guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildApplicationCommandsPermissionsResult>;\n\t}\n\n\t/**\n\t * Edits the permissions for a guild command\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions}\n\t * @param userToken - The token of the user to edit permissions on behalf of\n\t * @param applicationId - The application id to edit the permissions for\n\t * @param guildId - The guild id to edit the permissions for\n\t * @param commandId - The id of the command to edit the permissions for\n\t * @param body - The data for editing the permissions\n\t * @param options - The options for editing the permissions\n\t */\n\tpublic async editGuildCommandPermissions(\n\t\tuserToken: string,\n\t\tapplicationId: Snowflake,\n\t\tguildId: Snowflake,\n\t\tcommandId: Snowflake,\n\t\tbody: RESTPutAPIApplicationCommandPermissionsJSONBody,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationCommandPermissions(applicationId, guildId, commandId), {\n\t\t\theaders: { Authorization: `Bearer ${userToken.replace('Bearer ', '')}` },\n\t\t\tauth: false,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationCommandPermissionsResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIApplicationEmojiResult,\n\ttype RESTGetAPIApplicationEmojisResult,\n\ttype RESTGetCurrentApplicationResult,\n\ttype RESTPatchAPIApplicationEmojiJSONBody,\n\ttype RESTPatchAPIApplicationEmojiResult,\n\ttype RESTPatchCurrentApplicationJSONBody,\n\ttype RESTPatchCurrentApplicationResult,\n\ttype RESTPostAPIApplicationEmojiJSONBody,\n\ttype RESTPostAPIApplicationEmojiResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class ApplicationsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches the application associated with the requesting bot user.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application#get-current-application}\n\t * @param options - The options for fetching the application\n\t */\n\tpublic async getCurrent({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.currentApplication(), { auth, signal }) as Promise<RESTGetCurrentApplicationResult>;\n\t}\n\n\t/**\n\t * Edits properties of the application associated with the requesting bot user.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application#edit-current-application}\n\t * @param body - The new application data\n\t * @param options - The options for editing the application\n\t */\n\tpublic async editCurrent(\n\t\tbody: RESTPatchCurrentApplicationJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.currentApplication(), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchCurrentApplicationResult>;\n\t}\n\n\t/**\n\t * Fetches all emojis of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#list-application-emojis}\n\t * @param applicationId - The id of the application to fetch the emojis of\n\t * @param options - The options for fetching the emojis\n\t */\n\tpublic async getEmojis(applicationId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.applicationEmojis(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationEmojisResult>;\n\t}\n\n\t/**\n\t * Fetches an emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#get-application-emoji}\n\t * @param applicationId - The id of the application to fetch the emoji of\n\t * @param emojiId - The id of the emoji to fetch\n\t * @param options - The options for fetching the emoji\n\t */\n\tpublic async getEmoji(\n\t\tapplicationId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationEmoji(applicationId, emojiId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationEmojiResult>;\n\t}\n\n\t/**\n\t * Creates a new emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#create-application-emoji}\n\t * @param applicationId - The id of the application to create the emoji of\n\t * @param body - The data for creating the emoji\n\t * @param options - The options for creating the emoji\n\t */\n\tpublic async createEmoji(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPostAPIApplicationEmojiJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.applicationEmojis(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIApplicationEmojiResult>;\n\t}\n\n\t/**\n\t * Edits an emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#modify-application-emoji}\n\t * @param applicationId - The id of the application to edit the emoji of\n\t * @param emojiId - The id of the emoji to edit\n\t * @param body - The data for editing the emoji\n\t * @param options - The options for editing the emoji\n\t */\n\tpublic async editEmoji(\n\t\tapplicationId: Snowflake,\n\t\temojiId: Snowflake,\n\t\tbody: RESTPatchAPIApplicationEmojiJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.applicationEmoji(applicationId, emojiId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIApplicationEmojiResult>;\n\t}\n\n\t/**\n\t * Deletes an emoji of an application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#delete-application-emoji}\n\t * @param applicationId - The id of the application to delete the emoji of\n\t * @param emojiId - The id of the emoji to delete\n\t * @param options - The options for deleting the emoji\n\t */\n\tpublic async deleteEmoji(\n\t\tapplicationId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.applicationEmoji(applicationId, emojiId), { auth, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RawFile, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTDeleteAPIChannelResult,\n\ttype RESTGetAPIChannelInvitesResult,\n\ttype RESTGetAPIChannelMessageReactionUsersQuery,\n\ttype RESTGetAPIChannelMessageReactionUsersResult,\n\ttype RESTGetAPIChannelMessageResult,\n\ttype RESTGetAPIChannelMessagesPinsQuery,\n\ttype RESTGetAPIChannelMessagesPinsResult,\n\ttype RESTGetAPIChannelMessagesQuery,\n\ttype RESTGetAPIChannelMessagesResult,\n\ttype RESTGetAPIChannelResult,\n\ttype RESTGetAPIChannelThreadsArchivedQuery,\n\ttype RESTGetAPIChannelUsersThreadsArchivedResult,\n\ttype RESTGetAPIChannelWebhooksResult,\n\ttype RESTPatchAPIChannelJSONBody,\n\ttype RESTPatchAPIChannelMessageJSONBody,\n\ttype RESTPatchAPIChannelMessageResult,\n\ttype RESTPatchAPIChannelResult,\n\ttype RESTPostAPIChannelFollowersResult,\n\ttype RESTPostAPIChannelInviteJSONBody,\n\ttype RESTPostAPIChannelInviteResult,\n\ttype RESTPostAPIChannelMessageCrosspostResult,\n\ttype RESTPostAPIChannelMessageJSONBody,\n\ttype RESTPostAPIChannelMessageResult,\n\ttype RESTPostAPIChannelThreadsJSONBody,\n\ttype RESTPostAPIChannelThreadsResult,\n\ttype RESTPostAPIChannelWebhookJSONBody,\n\ttype RESTPostAPIChannelWebhookResult,\n\ttype RESTPostAPIGuildForumThreadsJSONBody,\n\ttype RESTPostAPISendSoundboardSoundResult,\n\ttype RESTPostAPISoundboardSendSoundJSONBody,\n\ttype RESTPutAPIChannelPermissionJSONBody,\n\ttype RESTPutAPIChannelRecipientJSONBody,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport interface StartForumThreadOptions extends RESTPostAPIGuildForumThreadsJSONBody {\n\tmessage: RESTPostAPIGuildForumThreadsJSONBody['message'] & { files?: RawFile[] };\n}\n\nexport interface CreateMessageOptions extends RESTPostAPIChannelMessageJSONBody {\n\tfiles?: RawFile[];\n}\n\nexport interface EditMessageOptions extends RESTPatchAPIChannelMessageJSONBody {\n\tfiles?: RawFile[];\n}\n\nexport class ChannelsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Sends a message in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#create-message}\n\t * @param channelId - The id of the channel to send the message in\n\t * @param body - The data for sending the message\n\t * @param options - The options for sending the message\n\t */\n\tpublic async createMessage(\n\t\tchannelId: Snowflake,\n\t\t{ files, ...body }: CreateMessageOptions,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelMessages(channelId), {\n\t\t\tauth,\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelMessageResult>;\n\t}\n\n\t/**\n\t * Edits a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#edit-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to edit\n\t * @param body - The data for editing the message\n\t * @param options - The options for editing the message\n\t */\n\tpublic async editMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ files, ...body }: EditMessageOptions,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.channelMessage(channelId, messageId), {\n\t\t\tauth,\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIChannelMessageResult>;\n\t}\n\n\t/**\n\t * Fetches the reactions for a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-reactions}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to get the reactions for\n\t * @param emoji - The emoji to get the reactions for. URL encoding happens internally\n\t * @param query - The query options for fetching the reactions\n\t * @param options - The options for fetching the message reactions\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.getMessageReactions('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.getMessageReactions('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async getMessageReactions(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\tquery: RESTGetAPIChannelMessageReactionUsersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessageReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessageReactionUsersResult>;\n\t}\n\n\t/**\n\t * Deletes a reaction for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-own-reaction}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reaction for\n\t * @param emoji - The emoji to delete the reaction for. URL encoding happens internally\n\t * @param options - The options for deleting the reaction\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.deleteOwnMessageReaction('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.deleteOwnMessageReaction('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async deleteOwnMessageReaction(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageOwnReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Deletes a reaction for a user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-user-reaction}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reaction for\n\t * @param emoji - The emoji to delete the reaction for. URL encoding happens internally\n\t * @param userId - The id of the user to delete the reaction for\n\t * @param options - The options for deleting the reaction\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.deleteUserMessageReaction('1234567890', '1234567890', '👍', '1234567890');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.deleteUserMessageReaction('1234567890', '1234567890', 'emoji_name:1234567890', '1234567890');\n\t * ```\n\t */\n\tpublic async deleteUserMessageReaction(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageUserReaction(channelId, messageId, encodeURIComponent(emoji), userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Deletes all reactions for a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-all-reactions}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reactions for\n\t * @param options - The options for deleting the reactions\n\t */\n\tpublic async deleteAllMessageReactions(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageAllReactions(channelId, messageId), { auth, signal });\n\t}\n\n\t/**\n\t * Deletes all reactions of an emoji for a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-all-reactions-for-emoji}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete the reactions for\n\t * @param emoji - The emoji to delete the reactions for. URL encoding happens internally\n\t * @param options - The options for deleting the reactions\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.deleteAllMessageReactionsForEmoji('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.deleteAllMessageReactionsForEmoji('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async deleteAllMessageReactionsForEmoji(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessageReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Adds a reaction to a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#create-reaction}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to add the reaction to\n\t * @param emoji - The emoji to add the reaction with. URL encoding happens internally\n\t * @param options - The options for adding the reaction\n\t * @example\n\t * ```ts\n\t * // Unicode.\n\t * await api.channels.addMessageReaction('1234567890', '1234567890', '👍');\n\t *\n\t * // Custom emoji.\n\t * await api.channels.addMessageReaction('1234567890', '1234567890', 'emoji_name:1234567890');\n\t * ```\n\t */\n\tpublic async addMessageReaction(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\temoji: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelMessageOwnReaction(channelId, messageId, encodeURIComponent(emoji)), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetches a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-channel}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for fetching the channel\n\t */\n\tpublic async get(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.channel(channelId), { auth, signal }) as Promise<RESTGetAPIChannelResult>;\n\t}\n\n\t/**\n\t * Edits a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#modify-channel}\n\t * @param channelId - The id of the channel to edit\n\t * @param body - The new channel data\n\t * @param options - The options for editing the channel\n\t */\n\tpublic async edit(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPatchAPIChannelJSONBody,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.channel(channelId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIChannelResult>;\n\t}\n\n\t/**\n\t * Deletes a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#deleteclose-channel}\n\t * @param channelId - The id of the channel to delete\n\t * @param options - The options for deleting the channel\n\t */\n\tpublic async delete(\n\t\tchannelId: Snowflake,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.delete(Routes.channel(channelId), { auth, signal, reason }) as Promise<RESTDeleteAPIChannelResult>;\n\t}\n\n\t/**\n\t * Fetches the messages of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-channel-messages}\n\t * @param channelId - The id of the channel to fetch messages from\n\t * @param query - The query options for fetching messages\n\t * @param options - The options for fetching the messages\n\t */\n\tpublic async getMessages(\n\t\tchannelId: Snowflake,\n\t\tquery: RESTGetAPIChannelMessagesQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessages(channelId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessagesResult>;\n\t}\n\n\t/**\n\t * Shows a typing indicator in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#trigger-typing-indicator}\n\t * @param channelId - The id of the channel to show the typing indicator in\n\t * @param options - The options for showing the typing indicator\n\t */\n\tpublic async showTyping(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.post(Routes.channelTyping(channelId), { auth, signal });\n\t}\n\n\t/**\n\t * Fetches pinned messages of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-channel-pins}\n\t * @param channelId - The id of the channel to fetch pinned messages from\n\t * @param query - The query options for fetching pinned messages\n\t * @param options - The options for fetching pinned messages\n\t */\n\tpublic async getPins(\n\t\tchannelId: Snowflake,\n\t\tquery: RESTGetAPIChannelMessagesPinsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessagesPins(channelId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessagesPinsResult>;\n\t}\n\n\t/**\n\t * Pins a message in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#pin-message}\n\t * @param channelId - The id of the channel to pin the message in\n\t * @param messageId - The id of the message to pin\n\t * @param options - The options for pinning the message\n\t */\n\tpublic async pinMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelMessagesPin(channelId, messageId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Deletes a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#delete-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to delete\n\t * @param options - The options for deleting the message\n\t */\n\tpublic async deleteMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessage(channelId, messageId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Bulk deletes messages\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#bulk-delete-messages}\n\t * @param channelId - The id of the channel the messages are in\n\t * @param messageIds - The ids of the messages to delete\n\t * @param options - The options for deleting the messages\n\t */\n\tpublic async bulkDeleteMessages(\n\t\tchannelId: Snowflake,\n\t\tmessageIds: Snowflake[],\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t): Promise<void> {\n\t\tawait this.rest.post(Routes.channelBulkDelete(channelId), { auth, reason, body: { messages: messageIds }, signal });\n\t}\n\n\t/**\n\t * Fetches a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#get-channel-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to fetch\n\t * @param options - The options for fetching the message\n\t */\n\tpublic async getMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelMessage(channelId, messageId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelMessageResult>;\n\t}\n\n\t/**\n\t * Crossposts a message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#crosspost-message}\n\t * @param channelId - The id of the channel the message is in\n\t * @param messageId - The id of the message to crosspost\n\t * @param options - The options for crossposting the message\n\t */\n\tpublic async crosspostMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelMessageCrosspost(channelId, messageId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelMessageCrosspostResult>;\n\t}\n\n\t/**\n\t * Unpins a message in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/message#unpin-message}\n\t * @param channelId - The id of the channel to unpin the message in\n\t * @param messageId - The id of the message to unpin\n\t * @param options - The options for unpinning the message\n\t */\n\tpublic async unpinMessage(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelMessagesPin(channelId, messageId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Follows an announcement channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#follow-announcement-channel}\n\t * @param channelId - The id of the announcement channel to follow\n\t * @param webhookChannelId - The id of the webhook channel to follow the announcements in\n\t * @param options - The options for following the announcement channel\n\t */\n\tpublic async followAnnouncements(\n\t\tchannelId: Snowflake,\n\t\twebhookChannelId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelFollowers(channelId), {\n\t\t\tauth,\n\t\t\tbody: { webhook_channel_id: webhookChannelId },\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelFollowersResult>;\n\t}\n\n\t/**\n\t * Creates a new invite for a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#create-channel-invite}\n\t * @param channelId - The id of the channel to create an invite for\n\t * @param body - The data for creating the invite\n\t * @param options - The options for creating the invite\n\t */\n\tpublic async createInvite(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPIChannelInviteJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelInvites(channelId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelInviteResult>;\n\t}\n\n\t/**\n\t * Fetches the invites of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-channel-invites}\n\t * @param channelId - The id of the channel to fetch invites from\n\t * @param options - The options for fetching the invites\n\t */\n\tpublic async getInvites(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.channelInvites(channelId), { auth, signal }) as Promise<RESTGetAPIChannelInvitesResult>;\n\t}\n\n\t/**\n\t * Creates a new thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#start-thread-from-message}\n\t * @see {@link https://discord.com/developers/docs/resources/channel#start-thread-without-message}\n\t * @param channelId - The id of the channel to start the thread in\n\t * @param body - The data for starting the thread\n\t * @param messageId - The id of the message to start the thread from\n\t * @param options - The options for starting the thread\n\t */\n\tpublic async createThread(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPIChannelThreadsJSONBody,\n\t\tmessageId?: Snowflake,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.threads(channelId, messageId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\treason,\n\t\t}) as Promise<RESTPostAPIChannelThreadsResult>;\n\t}\n\n\t/**\n\t * Creates a new forum post\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#start-thread-in-forum-or-media-channel}\n\t * @param channelId - The id of the forum channel to start the thread in\n\t * @param body - The data for starting the thread\n\t * @param options - The options for starting the thread\n\t */\n\tpublic async createForumThread(\n\t\tchannelId: Snowflake,\n\t\t{ message, ...optionsBody }: StartForumThreadOptions,\n\t\t{ auth, signal, reason }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tconst { files, ...messageBody } = message;\n\n\t\tconst body = {\n\t\t\t...optionsBody,\n\t\t\tmessage: messageBody,\n\t\t};\n\n\t\treturn this.rest.post(Routes.threads(channelId), {\n\t\t\tauth,\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelThreadsResult>;\n\t}\n\n\t/**\n\t * Fetches the archived threads of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-public-archived-threads}\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-private-archived-threads}\n\t * @param channelId - The id of the channel to fetch archived threads from\n\t * @param archivedStatus - The archived status of the threads to fetch\n\t * @param query - The options for fetching archived threads\n\t * @param options - The options for fetching archived threads\n\t */\n\tpublic async getArchivedThreads(\n\t\tchannelId: Snowflake,\n\t\tarchivedStatus: 'private' | 'public',\n\t\tquery: RESTGetAPIChannelThreadsArchivedQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelThreads(channelId, archivedStatus), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelUsersThreadsArchivedResult>;\n\t}\n\n\t/**\n\t * Fetches the private joined archived threads of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads}\n\t * @param channelId - The id of the channel to fetch joined archived threads from\n\t * @param query - The options for fetching joined archived threads\n\t * @param options - The options for fetching joined archived threads\n\t */\n\tpublic async getJoinedPrivateArchivedThreads(\n\t\tchannelId: Snowflake,\n\t\tquery: RESTGetAPIChannelThreadsArchivedQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.channelJoinedArchivedThreads(channelId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelUsersThreadsArchivedResult>;\n\t}\n\n\t/**\n\t * Creates a new webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#create-webhook}\n\t * @param channelId - The id of the channel to create the webhook in\n\t * @param body - The data for creating the webhook\n\t * @param options - The options for creating the webhook\n\t */\n\tpublic async createWebhook(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPIChannelWebhookJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.channelWebhooks(channelId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIChannelWebhookResult>;\n\t}\n\n\t/**\n\t * Fetches the webhooks of a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-channel-webhooks}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for fetching the webhooks\n\t */\n\tpublic async getWebhooks(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.channelWebhooks(channelId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelWebhooksResult>;\n\t}\n\n\t/**\n\t * Edits the permission overwrite for a user or role in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#edit-channel-permissions}\n\t * @param channelId - The id of the channel to edit the permission overwrite in\n\t * @param overwriteId - The id of the user or role to edit the permission overwrite for\n\t * @param body - The data for editing the permission overwrite\n\t * @param options - The options for editing the permission overwrite\n\t */\n\tpublic async editPermissionOverwrite(\n\t\tchannelId: Snowflake,\n\t\toverwriteId: Snowflake,\n\t\tbody: RESTPutAPIChannelPermissionJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelPermission(channelId, overwriteId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Deletes the permission overwrite for a user or role in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#delete-channel-permission}\n\t * @param channelId - The id of the channel to delete the permission overwrite in\n\t * @param overwriteId - The id of the user or role to delete the permission overwrite for\n\t * @param options - The options for deleting the permission overwrite\n\t */\n\tpublic async deletePermissionOverwrite(\n\t\tchannelId: Snowflake,\n\t\toverwriteId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelPermission(channelId, overwriteId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Sends a soundboard sound in a channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#send-soundboard-sound}\n\t * @param channelId - The id of the channel to send the soundboard sound in\n\t * @param body - The data for sending the soundboard sound\n\t * @param options - The options for sending the soundboard sound\n\t */\n\tpublic async sendSoundboardSound(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPostAPISoundboardSendSoundJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.sendSoundboardSound(channelId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPISendSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Adds a recipient to a group DM channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#group-dm-add-recipient}\n\t * @param channelId - The id of the channel to add the recipient to\n\t * @param userId - The id of the user to add as a recipient\n\t * @param body - The data for adding the recipient\n\t * @param options - The options for adding the recipient\n\t */\n\tpublic async addGroupDMRecipient(\n\t\tchannelId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPutAPIChannelRecipientJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.channelRecipient(channelId, userId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Removes a recipient from a group DM channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#group-dm-remove-recipient}\n\t * @param channelId - The id of the channel to remove the recipient from\n\t * @param userId - The id of the user to remove as a recipient\n\t * @param options - The options for removing the recipient\n\t */\n\tpublic async removeGroupDMRecipient(\n\t\tchannelId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.channelRecipient(channelId, userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t});\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport { Routes, type RESTGetAPIGatewayBotResult, type RESTGetAPIGatewayResult } from 'discord-api-types/v10';\n\nexport class GatewayAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Gets gateway information.\n\t *\n\t * @see {@link https://discord.com/developers/docs/events/gateway#get-gateway}\n\t * @param options - The options for fetching the gateway information\n\t */\n\tpublic async get({ signal }: Pick<RequestData, 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.gateway(), {\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGatewayResult>;\n\t}\n\n\t/**\n\t * Gets gateway information with additional metadata.\n\t *\n\t * @see {@link https://discord.com/developers/docs/events/gateway#get-gateway-bot}\n\t * @param options - The options for fetching the gateway information\n\t */\n\tpublic async getBot({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.gatewayBot(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGatewayBotResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type REST, type RawFile, type RequestData } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype GuildWidgetStyle,\n\ttype RESTGetAPIAuditLogQuery,\n\ttype RESTGetAPIAuditLogResult,\n\ttype RESTGetAPIAutoModerationRuleResult,\n\ttype RESTGetAPIAutoModerationRulesResult,\n\ttype RESTGetAPIGuildBanResult,\n\ttype RESTGetAPIGuildBansQuery,\n\ttype RESTGetAPIGuildBansResult,\n\ttype RESTGetAPIGuildChannelsResult,\n\ttype RESTGetAPIGuildEmojiResult,\n\ttype RESTGetAPIGuildEmojisResult,\n\ttype RESTGetAPIGuildIntegrationsResult,\n\ttype RESTGetAPIGuildInvitesResult,\n\ttype RESTGetAPIGuildMemberResult,\n\ttype RESTGetAPIGuildMembersQuery,\n\ttype RESTGetAPIGuildMembersResult,\n\ttype RESTGetAPIGuildMembersSearchQuery,\n\ttype RESTGetAPIGuildMembersSearchResult,\n\ttype RESTGetAPIGuildOnboardingResult,\n\ttype RESTGetAPIGuildPreviewResult,\n\ttype RESTGetAPIGuildPruneCountQuery,\n\ttype RESTGetAPIGuildPruneCountResult,\n\ttype RESTGetAPIGuildQuery,\n\ttype RESTGetAPIGuildResult,\n\ttype RESTGetAPIGuildRoleMemberCountsResult,\n\ttype RESTGetAPIGuildRoleResult,\n\ttype RESTGetAPIGuildRolesResult,\n\ttype RESTGetAPIGuildScheduledEventQuery,\n\ttype RESTGetAPIGuildScheduledEventResult,\n\ttype RESTGetAPIGuildScheduledEventUsersQuery,\n\ttype RESTGetAPIGuildScheduledEventUsersResult,\n\ttype RESTGetAPIGuildScheduledEventsQuery,\n\ttype RESTGetAPIGuildScheduledEventsResult,\n\ttype RESTGetAPIGuildSoundboardSoundResult,\n\ttype RESTGetAPIGuildSoundboardSoundsResult,\n\ttype RESTGetAPIGuildStickerResult,\n\ttype RESTGetAPIGuildStickersResult,\n\ttype RESTGetAPIGuildTemplatesResult,\n\ttype RESTGetAPIGuildThreadsResult,\n\ttype RESTGetAPIGuildVanityUrlResult,\n\ttype RESTGetAPIGuildVoiceRegionsResult,\n\ttype RESTGetAPIGuildWebhooksResult,\n\ttype RESTGetAPIGuildWelcomeScreenResult,\n\ttype RESTGetAPIGuildWidgetImageResult,\n\ttype RESTGetAPIGuildWidgetJSONResult,\n\ttype RESTGetAPIGuildWidgetSettingsResult,\n\ttype RESTGetAPITemplateResult,\n\ttype RESTPatchAPIAutoModerationRuleJSONBody,\n\ttype RESTPatchAPIAutoModerationRuleResult,\n\ttype RESTPatchAPIGuildChannelPositionsJSONBody,\n\ttype RESTPatchAPIGuildEmojiJSONBody,\n\ttype RESTPatchAPIGuildEmojiResult,\n\ttype RESTPatchAPIGuildJSONBody,\n\ttype RESTPatchAPIGuildMemberJSONBody,\n\ttype RESTPatchAPIGuildMemberResult,\n\ttype RESTPatchAPIGuildResult,\n\ttype RESTPatchAPIGuildRoleJSONBody,\n\ttype RESTPatchAPIGuildRolePositionsJSONBody,\n\ttype RESTPatchAPIGuildRolePositionsResult,\n\ttype RESTPatchAPIGuildRoleResult,\n\ttype RESTPatchAPIGuildScheduledEventJSONBody,\n\ttype RESTPatchAPIGuildScheduledEventResult,\n\ttype RESTPatchAPIGuildSoundboardSoundJSONBody,\n\ttype RESTPatchAPIGuildSoundboardSoundResult,\n\ttype RESTPatchAPIGuildStickerJSONBody,\n\ttype RESTPatchAPIGuildStickerResult,\n\ttype RESTPatchAPIGuildTemplateJSONBody,\n\ttype RESTPatchAPIGuildTemplateResult,\n\ttype RESTPatchAPIGuildWelcomeScreenJSONBody,\n\ttype RESTPatchAPIGuildWelcomeScreenResult,\n\ttype RESTPatchAPIGuildWidgetSettingsJSONBody,\n\ttype RESTPatchAPIGuildWidgetSettingsResult,\n\ttype RESTPostAPIAutoModerationRuleJSONBody,\n\ttype RESTPostAPIAutoModerationRuleResult,\n\ttype RESTPostAPIGuildBulkBanJSONBody,\n\ttype RESTPostAPIGuildBulkBanResult,\n\ttype RESTPostAPIGuildChannelJSONBody,\n\ttype RESTPostAPIGuildChannelResult,\n\ttype RESTPostAPIGuildEmojiJSONBody,\n\ttype RESTPostAPIGuildEmojiResult,\n\ttype RESTPostAPIGuildPruneJSONBody,\n\ttype RESTPostAPIGuildPruneResult,\n\ttype RESTPostAPIGuildRoleJSONBody,\n\ttype RESTPostAPIGuildRoleResult,\n\ttype RESTPostAPIGuildScheduledEventJSONBody,\n\ttype RESTPostAPIGuildScheduledEventResult,\n\ttype RESTPostAPIGuildSoundboardSoundJSONBody,\n\ttype RESTPostAPIGuildSoundboardSoundResult,\n\ttype RESTPostAPIGuildStickerFormDataBody,\n\ttype RESTPostAPIGuildStickerResult,\n\ttype RESTPostAPIGuildTemplatesJSONBody,\n\ttype RESTPostAPIGuildTemplatesResult,\n\ttype RESTPutAPIGuildBanJSONBody,\n\ttype RESTPutAPIGuildIncidentActionsJSONBody,\n\ttype RESTPutAPIGuildIncidentActionsResult,\n\ttype RESTPutAPIGuildMemberJSONBody,\n\ttype RESTPutAPIGuildMemberResult,\n\ttype RESTPutAPIGuildOnboardingJSONBody,\n\ttype RESTPutAPIGuildOnboardingResult,\n\ttype RESTPutAPIGuildTemplateSyncResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport interface CreateStickerOptions extends Omit<RESTPostAPIGuildStickerFormDataBody, 'file'> {\n\tfile: RawFile;\n}\n\nexport class GuildsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild}\n\t * @param guildId - The id of the guild\n\t * @param query - The query options for fetching the guild\n\t * @param options - The options for fetching the guild\n\t */\n\tpublic async get(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guild(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildResult>;\n\t}\n\n\t/**\n\t * Fetches a guild preview\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-preview}\n\t * @param guildId - The id of the guild to fetch the preview from\n\t * @param options - The options for fetching the guild preview\n\t */\n\tpublic async getPreview(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildPreview(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildPreviewResult>;\n\t}\n\n\t/**\n\t * Edits a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild}\n\t * @param guildId - The id of the guild to edit\n\t * @param body - The new guild data\n\t * @param options - The options for editing the guild\n\t */\n\tpublic async edit(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guild(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildResult>;\n\t}\n\n\t/**\n\t * Adds user to the guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member}\n\t * @param guildId - The id of the guild to add the user to\n\t * @param userId - The id of the user to add\n\t * @param body - The data for adding users to the guild\n\t * @param options - The options for adding users to the guild\n\t */\n\tpublic async addMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPutAPIGuildMemberJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildMember(guildId, userId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Fetches members of a guild.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#list-guild-members}\n\t * @param guildId - The id of the guild\n\t * @param query - The query for fetching the guild members\n\t * @param options - The options for fetching the guild members\n\t */\n\tpublic async getMembers(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildMembersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildMembers(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildMembersResult>;\n\t}\n\n\t/**\n\t * Fetches a guild's channels\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-channels}\n\t * @param guildId - The id of the guild to fetch the channels from\n\t * @param options - The options for fetching the guild channels\n\t */\n\tpublic async getChannels(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildChannels(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildChannelsResult>;\n\t}\n\n\t/**\n\t * Creates a guild channel\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#create-guild-channel}\n\t * @param guildId - The id of the guild to create the channel in\n\t * @param body - The data to create the new channel\n\t * @param options - The options for creating the guild channel\n\t */\n\tpublic async createChannel(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildChannelJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildChannels(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildChannelResult>;\n\t}\n\n\t/**\n\t * Edits a guild channel's positions\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions}\n\t * @param guildId - The id of the guild to edit the channel positions from\n\t * @param body - The data to edit the channel positions with\n\t * @param options - The options for editing the guild channel positions\n\t */\n\tpublic async setChannelPositions(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildChannelPositionsJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.patch(Routes.guildChannels(guildId), { auth, reason, body, signal });\n\t}\n\n\t/**\n\t * Fetches the active threads in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#list-active-guild-threads}\n\t * @param guildId - The id of the guild to fetch the active threads from\n\t * @param options - The options for fetching the active threads\n\t */\n\tpublic async getActiveThreads(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildActiveThreads(guildId), { auth, signal }) as Promise<RESTGetAPIGuildThreadsResult>;\n\t}\n\n\t/**\n\t * Fetches a guild member ban\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-ban}\n\t * @param guildId - The id of the guild to fetch the ban from\n\t * @param userId - The id of the user to fetch the ban\n\t * @param options - The options for fetching the ban\n\t */\n\tpublic async getMemberBan(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildBan(guildId, userId), { auth, signal }) as Promise<RESTGetAPIGuildBanResult>;\n\t}\n\n\t/**\n\t * Fetches guild member bans\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-bans}\n\t * @param guildId - The id of the guild to fetch the bans from\n\t * @param query - The query options for fetching the bans\n\t * @param options - The options for fetching the bans\n\t */\n\tpublic async getMemberBans(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildBansQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildBans(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildBansResult>;\n\t}\n\n\t/**\n\t * Bans a user from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#create-guild-ban}\n\t * @param guildId - The id of the guild to ban the member in\n\t * @param userId - The id of the user to ban\n\t * @param body - The payload for banning the user\n\t * @param options - The options for banning the user\n\t */\n\tpublic async banUser(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPutAPIGuildBanJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.guildBan(guildId, userId), { auth, reason, body, signal });\n\t}\n\n\t/**\n\t * Unbans a user from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-ban}\n\t * @param guildId - The id of the guild to unban the member in\n\t * @param userId - The id of the user to unban\n\t * @param options - The options for unbanning the user\n\t */\n\tpublic async unbanUser(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildBan(guildId, userId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Bulk ban users from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#bulk-guild-ban}\n\t * @param guildId - The id of the guild to bulk ban users in\n\t * @param body - The data for bulk banning users\n\t * @param options - The options for bulk banning users\n\t */\n\tpublic async bulkBanUsers(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildBulkBanJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildBulkBan(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildBulkBanResult>;\n\t}\n\n\t/**\n\t * Gets all the roles in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-roles}\n\t * @param guildId - The id of the guild to fetch the roles from\n\t * @param options - The options for fetching the guild roles\n\t */\n\tpublic async getRoles(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildRoles(guildId), { auth, signal }) as Promise<RESTGetAPIGuildRolesResult>;\n\t}\n\n\t/**\n\t * Get a role in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-role}\n\t * @param guildId - The id of the guild to fetch the role from\n\t * @param roleId - The id of the role to fetch\n\t * @param options - The options for fetching the guild role\n\t */\n\tpublic async getRole(\n\t\tguildId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildRole(guildId, roleId), { auth, signal }) as Promise<RESTGetAPIGuildRoleResult>;\n\t}\n\n\t/**\n\t * Creates a guild role\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#create-guild-role}\n\t * @param guildId - The id of the guild to create the role in\n\t * @param body - The data to create the role with\n\t * @param options - The options for creating the guild role\n\t */\n\tpublic async createRole(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildRoleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildRoles(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildRoleResult>;\n\t}\n\n\t/**\n\t * Sets role positions in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-role-positions}\n\t * @param guildId - The id of the guild to set role positions for\n\t * @param body - The data for setting a role position\n\t * @param options - The options for setting role positions\n\t */\n\tpublic async setRolePositions(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildRolePositionsJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildRoles(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildRolePositionsResult>;\n\t}\n\n\t/**\n\t * Edits a guild role\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-role}\n\t * @param guildId - The id of the guild to edit the role in\n\t * @param roleId - The id of the role to edit\n\t * @param body - data for editing the role\n\t * @param options - The options for editing the guild role\n\t */\n\tpublic async editRole(\n\t\tguildId: Snowflake,\n\t\troleId: Snowflake,\n\t\tbody: RESTPatchAPIGuildRoleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildRole(guildId, roleId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildRoleResult>;\n\t}\n\n\t/**\n\t * Deletes a guild role\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#delete-guild-role}\n\t * @param guildId - The id of the guild to delete the role in\n\t * @param roleId - The id of the role to delete\n\t * @param options - The options for deleting the guild role\n\t */\n\tpublic async deleteRole(\n\t\tguildId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildRole(guildId, roleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetch the number of members that can be pruned from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-prune-count}\n\t * @param guildId - The id of the guild to fetch the number of pruned members from\n\t * @param query - The query options for fetching the number of pruned members\n\t * @param options - The options for fetching the number of pruned members\n\t */\n\tpublic async getPruneCount(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildPruneCountQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildPrune(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPIGuildPruneCountResult>;\n\t}\n\n\t/**\n\t * Prunes members in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#begin-guild-prune}\n\t * @param guildId - The id of the guild to prune members in\n\t * @param body - The options for pruning members\n\t * @param options - The options for initiating the prune\n\t */\n\tpublic async beginPrune(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildPruneJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildPrune(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildPruneResult>;\n\t}\n\n\t/**\n\t * Fetches voice regions for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-voice-regions}\n\t * @param guildId - The id of the guild to fetch the voice regions from\n\t * @param options - The options for fetching the voice regions\n\t */\n\tpublic async getVoiceRegions(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildVoiceRegions(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildVoiceRegionsResult>;\n\t}\n\n\t/**\n\t * Fetches the invites for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-invites}\n\t * @param guildId - The id of the guild to fetch the invites from\n\t * @param options - The options for fetching the invites\n\t */\n\tpublic async getInvites(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildInvites(guildId), { auth, signal }) as Promise<RESTGetAPIGuildInvitesResult>;\n\t}\n\n\t/**\n\t * Fetches the integrations for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-integrations}\n\t * @param guildId - The id of the guild to fetch the integrations from\n\t * @param options - The options for fetching the integrations\n\t */\n\tpublic async getIntegrations(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildIntegrations(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildIntegrationsResult>;\n\t}\n\n\t/**\n\t * Deletes an integration from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#delete-guild-integration}\n\t * @param guildId - The id of the guild to delete the integration from\n\t * @param integrationId - The id of the integration to delete\n\t * @param options - The options for deleting the integration\n\t */\n\tpublic async deleteIntegration(\n\t\tguildId: Snowflake,\n\t\tintegrationId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildIntegration(guildId, integrationId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches the widget settings for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget-settings}\n\t * @param guildId - The id of the guild to fetch the widget settings from\n\t * @param options - The options for fetching the widget settings\n\t */\n\tpublic async getWidgetSettings(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWidgetSettings(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildWidgetSettingsResult>;\n\t}\n\n\t/**\n\t * Edits the widget settings for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-widget}\n\t * @param guildId - The id of the guild to edit the widget settings from\n\t * @param body - The new widget settings data\n\t * @param options - The options for editing the widget settings\n\t */\n\tpublic async editWidgetSettings(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildWidgetSettingsJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildWidgetSettings(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildWidgetSettingsResult>;\n\t}\n\n\t/**\n\t * Fetches the widget for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget}\n\t * @param guildId - The id of the guild to fetch the widget from\n\t * @param options - The options for fetching the widget\n\t */\n\tpublic async getWidget(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWidgetJSON(guildId), { auth, signal }) as Promise<RESTGetAPIGuildWidgetJSONResult>;\n\t}\n\n\t/**\n\t * Fetches the vanity url for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-vanity-url}\n\t * @param guildId - The id of the guild to fetch the vanity url from\n\t * @param options - The options for fetching the vanity url\n\t */\n\tpublic async getVanityURL(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildVanityUrl(guildId), { auth, signal }) as Promise<RESTGetAPIGuildVanityUrlResult>;\n\t}\n\n\t/**\n\t * Fetches the widget image for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-widget-image}\n\t * @param guildId - The id of the guild to fetch the widget image from\n\t * @param style - The style of the widget image\n\t * @param options - The options for fetching the widget image\n\t */\n\tpublic async getWidgetImage(\n\t\tguildId: Snowflake,\n\t\tstyle?: GuildWidgetStyle,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildWidgetImage(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams({ style }),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildWidgetImageResult>;\n\t}\n\n\t/**\n\t * Fetches the welcome screen for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-welcome-screen}\n\t * @param guildId - The id of the guild to fetch the welcome screen from\n\t * @param options - The options for fetching the welcome screen\n\t */\n\tpublic async getWelcomeScreen(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWelcomeScreen(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildWelcomeScreenResult>;\n\t}\n\n\t/**\n\t * Edits the welcome screen for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen}\n\t * @param guildId - The id of the guild to edit the welcome screen for\n\t * @param body - The new welcome screen data\n\t * @param options - The options for editing the welcome screen\n\t */\n\tpublic async editWelcomeScreen(\n\t\tguildId: Snowflake,\n\t\tbody?: RESTPatchAPIGuildWelcomeScreenJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildWelcomeScreen(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildWelcomeScreenResult>;\n\t}\n\n\t/**\n\t * Fetches all emojis for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#list-guild-emojis}\n\t * @param guildId - The id of the guild to fetch the emojis from\n\t * @param options - The options for fetching the emojis\n\t */\n\tpublic async getEmojis(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildEmojis(guildId), { auth, signal }) as Promise<RESTGetAPIGuildEmojisResult>;\n\t}\n\n\t/**\n\t * Fetches an emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#get-guild-emoji}\n\t * @param guildId - The id of the guild to fetch the emoji from\n\t * @param emojiId - The id of the emoji to fetch\n\t * @param options - The options for fetching the emoji\n\t */\n\tpublic async getEmoji(\n\t\tguildId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildEmoji(guildId, emojiId), { auth, signal }) as Promise<RESTGetAPIGuildEmojiResult>;\n\t}\n\n\t/**\n\t * Creates a new emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#create-guild-emoji}\n\t * @param guildId - The id of the guild to create the emoji from\n\t * @param body - The data for creating the emoji\n\t * @param options - The options for creating the emoji\n\t */\n\tpublic async createEmoji(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildEmojiJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildEmojis(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildEmojiResult>;\n\t}\n\n\t/**\n\t * Edits an emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#modify-guild-emoji}\n\t * @param guildId - The id of the guild to edit the emoji from\n\t * @param emojiId - The id of the emoji to edit\n\t * @param body - The data for editing the emoji\n\t * @param options - The options for editing the emoji\n\t */\n\tpublic async editEmoji(\n\t\tguildId: Snowflake,\n\t\temojiId: Snowflake,\n\t\tbody: RESTPatchAPIGuildEmojiJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildEmoji(guildId, emojiId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildEmojiResult>;\n\t}\n\n\t/**\n\t * Deletes an emoji for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/emoji#delete-guild-emoji}\n\t * @param guildId - The id of the guild to delete the emoji from\n\t * @param emojiId - The id of the emoji to delete\n\t * @param options - The options for deleting the emoji\n\t */\n\tpublic async deleteEmoji(\n\t\tguildId: Snowflake,\n\t\temojiId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildEmoji(guildId, emojiId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches all scheduled events for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild}\n\t * @param guildId - The id of the guild to fetch the scheduled events from\n\t * @param query - The query options for fetching the scheduled events\n\t * @param options - The options for fetching the scheduled events\n\t */\n\tpublic async getScheduledEvents(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildScheduledEventsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildScheduledEvents(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildScheduledEventsResult>;\n\t}\n\n\t/**\n\t * Creates a new scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event}\n\t * @param guildId - The id of the guild to create the scheduled event from\n\t * @param body - The data to create the event with\n\t * @param options - The options for creating the scheduled event\n\t */\n\tpublic async createScheduledEvent(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildScheduledEventJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildScheduledEvents(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildScheduledEventResult>;\n\t}\n\n\t/**\n\t * Fetches a scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event}\n\t * @param guildId - The id of the guild to fetch the scheduled event from\n\t * @param eventId - The id of the scheduled event to fetch\n\t * @param query - The options for fetching the scheduled event\n\t * @param options - The options for fetching the scheduled event\n\t */\n\tpublic async getScheduledEvent(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\tquery: RESTGetAPIGuildScheduledEventQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildScheduledEvent(guildId, eventId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildScheduledEventResult>;\n\t}\n\n\t/**\n\t * Edits a scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}\n\t * @param guildId - The id of the guild to edit the scheduled event from\n\t * @param eventId - The id of the scheduled event to edit\n\t * @param body - The new event data\n\t * @param options - The options for editing the scheduled event\n\t */\n\tpublic async editScheduledEvent(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\tbody: RESTPatchAPIGuildScheduledEventJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildScheduledEvent(guildId, eventId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildScheduledEventResult>;\n\t}\n\n\t/**\n\t * Deletes a scheduled event for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event}\n\t * @param guildId - The id of the guild to delete the scheduled event from\n\t * @param eventId - The id of the scheduled event to delete\n\t * @param options - The options for deleting the scheduled event\n\t */\n\tpublic async deleteScheduledEvent(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildScheduledEvent(guildId, eventId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Gets all users that are interested in a scheduled event\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users}\n\t * @param guildId - The id of the guild to fetch the scheduled event users from\n\t * @param eventId - The id of the scheduled event to fetch the users for\n\t * @param query - The options for fetching the scheduled event users\n\t * @param options - The options for fetching the scheduled event users\n\t */\n\tpublic async getScheduledEventUsers(\n\t\tguildId: Snowflake,\n\t\teventId: Snowflake,\n\t\tquery: RESTGetAPIGuildScheduledEventUsersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildScheduledEventUsers(guildId, eventId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildScheduledEventUsersResult>;\n\t}\n\n\t/**\n\t * Fetches all the templates for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-templates}\n\t * @param guildId - The id of the guild to fetch the templates from\n\t * @param options - The options for fetching the templates\n\t */\n\tpublic async getTemplates(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildTemplates(guildId), { auth, signal }) as Promise<RESTGetAPIGuildTemplatesResult>;\n\t}\n\n\t/**\n\t * Syncs a template for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#sync-guild-template}\n\t * @param guildId - The id of the guild to sync the template from\n\t * @param templateCode - The code of the template to sync\n\t * @param options - The options for syncing the template\n\t */\n\tpublic async syncTemplate(\n\t\tguildId: Snowflake,\n\t\ttemplateCode: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildTemplate(guildId, templateCode), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildTemplateSyncResult>;\n\t}\n\n\t/**\n\t * Edits a template for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#modify-guild-template}\n\t * @param guildId - The id of the guild to edit the template from\n\t * @param templateCode - The code of the template to edit\n\t * @param body - The data for editing the template\n\t * @param options - The options for editing the template\n\t */\n\tpublic async editTemplate(\n\t\tguildId: Snowflake,\n\t\ttemplateCode: string,\n\t\tbody: RESTPatchAPIGuildTemplateJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildTemplate(guildId, templateCode), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildTemplateResult>;\n\t}\n\n\t/**\n\t * Deletes a template for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#delete-guild-template}\n\t * @param guildId - The id of the guild to delete the template from\n\t * @param templateCode - The code of the template to delete\n\t * @param options - The options for deleting the template\n\t */\n\tpublic async deleteTemplate(\n\t\tguildId: Snowflake,\n\t\ttemplateCode: string,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildTemplate(guildId, templateCode), { auth, signal });\n\t}\n\n\t/**\n\t * Fetches all the stickers for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#list-guild-stickers}\n\t * @param guildId - The id of the guild to fetch the stickers from\n\t * @param options - The options for fetching the stickers\n\t */\n\tpublic async getStickers(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildStickers(guildId), { auth, signal }) as Promise<RESTGetAPIGuildStickersResult>;\n\t}\n\n\t/**\n\t * Fetches a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#get-guild-sticker}\n\t * @param guildId - The id of the guild to fetch the sticker from\n\t * @param stickerId - The id of the sticker to fetch\n\t * @param options - The options for fetching the sticker\n\t */\n\tpublic async getSticker(\n\t\tguildId: Snowflake,\n\t\tstickerId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildSticker(guildId, stickerId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildStickerResult>;\n\t}\n\n\t/**\n\t * Creates a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#create-guild-sticker}\n\t * @param guildId - The id of the guild to create the sticker for\n\t * @param body - The data for creating the sticker\n\t * @param options - The options for creating the sticker\n\t */\n\tpublic async createSticker(\n\t\tguildId: Snowflake,\n\t\t{ file, ...body }: CreateStickerOptions,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tconst fileData = { ...file, key: 'file' };\n\n\t\treturn this.rest.post(Routes.guildStickers(guildId), {\n\t\t\tauth,\n\t\t\tappendToFormData: true,\n\t\t\tbody,\n\t\t\tfiles: [fileData],\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildStickerResult>;\n\t}\n\n\t/**\n\t * Edits a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#modify-guild-sticker}\n\t * @param guildId - The id of the guild to edit the sticker from\n\t * @param stickerId - The id of the sticker to edit\n\t * @param body - The data for editing the sticker\n\t * @param options - The options for editing the sticker\n\t */\n\tpublic async editSticker(\n\t\tguildId: Snowflake,\n\t\tstickerId: Snowflake,\n\t\tbody: RESTPatchAPIGuildStickerJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildSticker(guildId, stickerId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildStickerResult>;\n\t}\n\n\t/**\n\t * Deletes a sticker for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#delete-guild-sticker}\n\t * @param guildId - The id of the guild to delete the sticker from\n\t * @param stickerId - The id of the sticker to delete\n\t * @param options - The options for deleting the sticker\n\t */\n\tpublic async deleteSticker(\n\t\tguildId: Snowflake,\n\t\tstickerId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildSticker(guildId, stickerId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches the audit logs for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/audit-log#get-guild-audit-log}\n\t * @param guildId - The id of the guild to fetch the audit logs from\n\t * @param query - The query options for fetching the audit logs\n\t * @param options - The options for fetching the audit logs\n\t */\n\tpublic async getAuditLogs(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIAuditLogQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildAuditLog(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIAuditLogResult>;\n\t}\n\n\t/**\n\t * Fetches all auto moderation rules for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#list-auto-moderation-rules-for-guild}\n\t * @param guildId - The id of the guild to fetch the auto moderation rules from\n\t * @param options - The options for fetching the auto moderation rules\n\t */\n\tpublic async getAutoModerationRules(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildAutoModerationRules(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIAutoModerationRulesResult>;\n\t}\n\n\t/**\n\t * Fetches an auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#get-auto-moderation-rule}\n\t * @param guildId - The id of the guild to fetch the auto moderation rule from\n\t * @param ruleId - The id of the auto moderation rule to fetch\n\t * @param options - The options for fetching the auto moderation rule\n\t */\n\tpublic async getAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\truleId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildAutoModerationRule(guildId, ruleId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIAutoModerationRuleResult>;\n\t}\n\n\t/**\n\t * Creates a new auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule}\n\t * @param guildId - The id of the guild to create the auto moderation rule from\n\t * @param body - The data for creating the auto moderation rule\n\t * @param options - The options for creating the auto moderation rule\n\t */\n\tpublic async createAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIAutoModerationRuleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildAutoModerationRules(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIAutoModerationRuleResult>;\n\t}\n\n\t/**\n\t * Edits an auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule}\n\t * @param guildId - The id of the guild to edit the auto moderation rule from\n\t * @param ruleId - The id of the auto moderation rule to edit\n\t * @param body - The data for editing the auto moderation rule\n\t * @param options - The options for editing the auto moderation rule\n\t */\n\tpublic async editAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\truleId: Snowflake,\n\t\tbody: RESTPatchAPIAutoModerationRuleJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildAutoModerationRule(guildId, ruleId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIAutoModerationRuleResult>;\n\t}\n\n\t/**\n\t * Deletes an auto moderation rule for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/auto-moderation#delete-auto-moderation-rule}\n\t * @param guildId - The id of the guild to delete the auto moderation rule from\n\t * @param ruleId - The id of the auto moderation rule to delete\n\t * @param options - The options for deleting the auto moderation rule\n\t */\n\tpublic async deleteAutoModerationRule(\n\t\tguildId: Snowflake,\n\t\truleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildAutoModerationRule(guildId, ruleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param options - The options for fetching the guild member\n\t */\n\tpublic async getMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildMember(guildId, userId), { auth, signal }) as Promise<RESTGetAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Searches for guild members\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#search-guild-members}\n\t * @param guildId - The id of the guild to search in\n\t * @param query - The query to search for\n\t * @param options - The options for searching for guild members\n\t */\n\tpublic async searchForMembers(\n\t\tguildId: Snowflake,\n\t\tquery: RESTGetAPIGuildMembersSearchQuery,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildMembersSearch(guildId), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildMembersSearchResult>;\n\t}\n\n\t/**\n\t * Edits a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param body - The data for editing the guild member\n\t * @param options - The options for editing the guild member\n\t */\n\tpublic async editMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPatchAPIGuildMemberJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildMember(guildId, userId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Removes a member from a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param options - The options for removing the guild member\n\t */\n\tpublic async removeMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.delete(Routes.guildMember(guildId, userId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Adds a role to a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member-role}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param roleId - The id of the role\n\t * @param options - The options for adding a role to a guild member\n\t */\n\tpublic async addRoleToMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.guildMemberRole(guildId, userId, roleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Removes a role from a guild member\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#remove-guild-member-role}\n\t * @param guildId - The id of the guild\n\t * @param userId - The id of the user\n\t * @param roleId - The id of the role\n\t * @param options - The options for removing a role from a guild member\n\t */\n\tpublic async removeRoleFromMember(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\troleId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildMemberRole(guildId, userId, roleId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Fetches a guild template\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-template}\n\t * @param templateCode - The code of the template\n\t * @param options - The options for fetching the guild template\n\t */\n\tpublic async getTemplate(templateCode: string, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.template(templateCode), { auth, signal }) as Promise<RESTGetAPITemplateResult>;\n\t}\n\n\t/**\n\t * Creates a new template\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-template}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for creating the template\n\t * @param options - The options for creating the template\n\t */\n\tpublic async createTemplate(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildTemplatesJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildTemplates(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildTemplatesResult>;\n\t}\n\n\t/**\n\t * Fetches webhooks for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-guild-webhooks}\n\t * @param id - The id of the guild\n\t * @param options - The options for fetching the webhooks\n\t */\n\tpublic async getWebhooks(id: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildWebhooks(id), { auth, signal }) as Promise<RESTGetAPIGuildWebhooksResult>;\n\t}\n\n\t/**\n\t * Fetches a guild onboarding\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-onboarding}\n\t * @param guildId - The id of the guild\n\t * @param options - The options for fetching the guild onboarding\n\t */\n\tpublic async getOnboarding(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildOnboarding(guildId), { auth, signal }) as Promise<RESTGetAPIGuildOnboardingResult>;\n\t}\n\n\t/**\n\t * Edits a guild onboarding\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-onboarding}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for editing the guild onboarding\n\t * @param options - The options for editing the guild onboarding\n\t */\n\tpublic async editOnboarding(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPutAPIGuildOnboardingJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildOnboarding(guildId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildOnboardingResult>;\n\t}\n\n\t/**\n\t * Fetches all the soundboard sounds for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#list-guild-soundboard-sounds}\n\t * @param guildId - The id of the guild to fetch the soundboard sounds for\n\t * @param options - The options for fetching the soundboard sounds\n\t */\n\tpublic async getSoundboardSounds(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildSoundboardSounds(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildSoundboardSoundsResult>;\n\t}\n\n\t/**\n\t * Fetches a soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#get-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to fetch the soundboard sound for\n\t * @param soundId - The id of the soundboard sound to fetch\n\t * @param options - The options for fetching the soundboard sound\n\t */\n\tpublic async getSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tsoundId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildSoundboardSound(guildId, soundId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Creates a new soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#create-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to create the soundboard sound for\n\t * @param body - The data for creating the soundboard sound\n\t * @param options - The options for creating the soundboard sound\n\t */\n\tpublic async createSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPostAPIGuildSoundboardSoundJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.guildSoundboardSounds(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIGuildSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Edits a soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#modify-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to edit the soundboard sound for\n\t * @param soundId - The id of the soundboard sound to edit\n\t * @param body - The data for editing the soundboard sound\n\t * @param options - The options for editing the soundboard sound\n\t */\n\tpublic async editSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tsoundId: Snowflake,\n\t\tbody: RESTPatchAPIGuildSoundboardSoundJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildSoundboardSound(guildId, soundId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildSoundboardSoundResult>;\n\t}\n\n\t/**\n\t * Deletes a soundboard sound for a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#delete-guild-soundboard-sound}\n\t * @param guildId - The id of the guild to delete the soundboard sound for\n\t * @param soundId - The id of the soundboard sound to delete\n\t * @param options - The options for deleting the soundboard sound\n\t */\n\tpublic async deleteSoundboardSound(\n\t\tguildId: Snowflake,\n\t\tsoundId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.guildSoundboardSound(guildId, soundId), { auth, reason, signal });\n\t}\n\n\t/**\n\t * Modifies incident actions for a guild.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-incident-actions}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for modifying guild incident actions\n\t * @param options - The options for modifying guild incident actions\n\t */\n\tpublic async editIncidentActions(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPutAPIGuildIncidentActionsJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.guildIncidentActions(guildId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIGuildIncidentActionsResult>;\n\t}\n\n\t/**\n\t * Fetches role member counts for a guild.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#get-guild-role-member-counts}\n\t * @param guildId - The id of the guild to fetch role member counts for\n\t * @param options - The options for fetching role member counts\n\t */\n\tpublic async getRoleMemberCounts(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildRoleMemberCounts(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildRoleMemberCountsResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RawFile, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tInteractionResponseType,\n\tRoutes,\n\ttype APICommandAutocompleteInteractionResponseCallbackData,\n\ttype APIInteractionResponseCallbackData,\n\ttype APIInteractionResponseDeferredChannelMessageWithSource,\n\ttype APIModalInteractionResponseCallbackData,\n\ttype RESTGetAPIWebhookWithTokenMessageResult,\n\ttype RESTPostAPIInteractionCallbackQuery,\n\ttype RESTPostAPIInteractionCallbackWithResponseResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\nimport type { WebhooksAPI } from './webhook.js';\n\nexport interface CreateInteractionResponseOptions\n\textends APIInteractionResponseCallbackData, RESTPostAPIInteractionCallbackQuery {\n\tfiles?: RawFile[];\n}\n\nexport type CreateInteractionDeferResponseOptions = APIInteractionResponseDeferredChannelMessageWithSource['data'] &\n\tRESTPostAPIInteractionCallbackQuery;\n\nexport type CreateInteractionFollowUpResponseOptions = APIInteractionResponseCallbackData & { files?: RawFile[] };\nexport type EditInteractionResponseOptions = APIInteractionResponseCallbackData & { files?: RawFile[] };\n\nexport type CreateInteractionUpdateMessageResponseOptions = APIInteractionResponseCallbackData &\n\tRESTPostAPIInteractionCallbackQuery & { files?: RawFile[] };\n\nexport type CreateAutocompleteResponseOptions = APICommandAutocompleteInteractionResponseCallbackData &\n\tRESTPostAPIInteractionCallbackQuery;\n\nexport type CreateModalResponseOptions = APIModalInteractionResponseCallbackData & RESTPostAPIInteractionCallbackQuery;\n\nexport class InteractionsAPI {\n\tpublic constructor(\n\t\tprivate readonly rest: REST,\n\t\tprivate readonly webhooks: WebhooksAPI,\n\t) {}\n\n\t/**\n\t * Replies to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Replies to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Replies to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async reply(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ files, with_response, ...data }: CreateInteractionResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tfiles,\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.ChannelMessageWithSource,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Defers the reply to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the reply\n\t * @param options - The options for deferring\n\t */\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionDeferResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Defers the reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the reply\n\t * @param options - The options for deferring\n\t */\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: CreateInteractionDeferResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Defers the reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the reply\n\t * @param options - The options for deferring\n\t */\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: CreateInteractionDeferResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async defer(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response, ...data }: CreateInteractionDeferResponseOptions = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.DeferredChannelMessageWithSource,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Defers an update from a message component interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the update\n\t * @param options - The options for deferring\n\t */\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: RESTPostAPIInteractionCallbackQuery & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Defers an update from a message component interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the update\n\t * @param options - The options for deferring\n\t */\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Defers an update from a message component interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for deferring the update\n\t * @param options - The options for deferring\n\t */\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async deferMessageUpdate(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response }: RESTPostAPIInteractionCallbackQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.DeferredMessageUpdate,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Reply to a deferred interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-followup-message}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for replying\n\t * @param options - The options for replying\n\t */\n\tpublic async followUp(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: CreateInteractionFollowUpResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.webhooks.execute(applicationId, interactionToken, { ...body, wait: true }, { signal });\n\t}\n\n\t/**\n\t * Edits the initial reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response}\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#edit-followup-message}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for editing the reply\n\t * @param messageId - The id of the message to edit. If omitted, the original reply will be edited\n\t * @param options - The options for editing the reply\n\t */\n\tpublic async editReply(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: EditInteractionResponseOptions,\n\t\tmessageId?: Snowflake | '@original',\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.webhooks.editMessage(applicationId, interactionToken, messageId ?? '@original', callbackData, {\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetches the initial reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#get-original-interaction-response}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param options - The options for fetching the reply\n\t */\n\tpublic async getOriginalReply(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.webhooks.getMessage(\n\t\t\tapplicationId,\n\t\t\tinteractionToken,\n\t\t\t'@original',\n\t\t\t{},\n\t\t\t{ signal },\n\t\t) as Promise<RESTGetAPIWebhookWithTokenMessageResult>;\n\t}\n\n\t/**\n\t * Deletes the initial reply to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#delete-original-interaction-response}\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#delete-followup-message}\n\t * @param applicationId - The application id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param messageId - The id of the message to delete. If omitted, the original reply will be deleted\n\t * @param options - The options for deleting the reply\n\t */\n\tpublic async deleteReply(\n\t\tapplicationId: Snowflake,\n\t\tinteractionToken: string,\n\t\tmessageId?: Snowflake | '@original',\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.webhooks.deleteMessage(applicationId, interactionToken, messageId ?? '@original', {}, { signal });\n\t}\n\n\t/**\n\t * Updates the message the component interaction was triggered on and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for updating the interaction\n\t * @param options - The options for updating the interaction\n\t */\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateInteractionUpdateMessageResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Updates the message the component interaction was triggered on\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for updating the interaction\n\t * @param options - The options for updating the interaction\n\t */\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateInteractionUpdateMessageResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Updates the message the component interaction was triggered on\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for updating the interaction\n\t * @param options - The options for updating the interaction\n\t */\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateInteractionUpdateMessageResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async updateMessage(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ files, with_response, ...data }: CreateInteractionUpdateMessageResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tfiles,\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.UpdateMessage,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Sends an autocomplete response to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for the autocomplete response\n\t * @param options - The options for sending the autocomplete response\n\t */\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateAutocompleteResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Sends an autocomplete response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for the autocomplete response\n\t * @param options - The options for sending the autocomplete response\n\t */\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateAutocompleteResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Sends an autocomplete response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The callback data for the autocomplete response\n\t * @param options - The options for sending the autocomplete response\n\t */\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateAutocompleteResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async createAutocompleteResponse(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response, ...data }: CreateAutocompleteResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.ApplicationCommandAutocompleteResult,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Sends a modal response to an interaction and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The modal callback data to send\n\t * @param options - The options for sending the modal\n\t */\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateModalResponseOptions & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Sends a modal response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The modal callback data to send\n\t * @param options - The options for sending the modal\n\t */\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateModalResponseOptions & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Sends a modal response to an interaction\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param callbackData - The modal callback data to send\n\t * @param options - The options for sending the modal\n\t */\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tcallbackData: CreateModalResponseOptions,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async createModal(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response, ...data }: CreateModalResponseOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.Modal,\n\t\t\t\tdata,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n\n\t/**\n\t * Launches an activity and returns an interaction callback object\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for launching the activity\n\t * @param options - The options for launching the activity\n\t */\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody: RESTPostAPIInteractionCallbackQuery & { with_response: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult>;\n\n\t/**\n\t * Launches an activity\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for launching the activity\n\t * @param options - The options for launching the activity\n\t */\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery & { with_response?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<undefined>;\n\n\t/**\n\t * Launches an activity\n\t *\n\t * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response}\n\t * @param interactionId - The id of the interaction\n\t * @param interactionToken - The token of the interaction\n\t * @param body - The callback data for launching the activity\n\t * @param options - The options for launching the activity\n\t */\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\tbody?: RESTPostAPIInteractionCallbackQuery,\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIInteractionCallbackWithResponseResult | undefined>;\n\n\tpublic async launchActivity(\n\t\tinteractionId: Snowflake,\n\t\tinteractionToken: string,\n\t\t{ with_response }: RESTPostAPIInteractionCallbackQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tconst response = await this.rest.post(Routes.interactionCallback(interactionId, interactionToken), {\n\t\t\tquery: makeURLSearchParams({ with_response }),\n\t\t\tauth: false,\n\t\t\tbody: {\n\t\t\t\ttype: InteractionResponseType.LaunchActivity,\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\n\t\treturn with_response ? response : undefined;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport { Routes, type RESTGetAPIInviteQuery, type RESTGetAPIInviteResult } from 'discord-api-types/v10';\n\nexport class InvitesAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches an invite\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/invite#get-invite}\n\t * @param code - The invite code\n\t * @param query - The options for fetching the invite\n\t * @param options - The options for fetching the invite\n\t */\n\tpublic async get(\n\t\tcode: string,\n\t\tquery: RESTGetAPIInviteQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.invite(code), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIInviteResult>;\n\t}\n\n\t/**\n\t * Deletes an invite\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/invite#delete-invite}\n\t * @param code - The invite code\n\t * @param options - The options for deleting the invite\n\t */\n\tpublic async delete(code: string, { auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {}) {\n\t\tawait this.rest.delete(Routes.invite(code), { auth, reason, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIEntitlementsQuery,\n\ttype RESTGetAPIEntitlementResult,\n\ttype RESTGetAPIEntitlementsResult,\n\ttype RESTGetAPISKUsResult,\n\ttype RESTGetAPISKUSubscriptionResult,\n\ttype RESTGetAPISKUSubscriptionsQuery,\n\ttype RESTGetAPISKUSubscriptionsResult,\n\ttype RESTPostAPIEntitlementJSONBody,\n\ttype RESTPostAPIEntitlementResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class MonetizationAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches the SKUs for an application.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sku#list-skus}\n\t * @param applicationId - The application id to fetch SKUs for\n\t * @param options - The options for fetching the SKUs.\n\t */\n\tpublic async getSKUs(applicationId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.skus(applicationId), { auth, signal }) as Promise<RESTGetAPISKUsResult>;\n\t}\n\n\t/**\n\t * Fetches subscriptions for an SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/subscription#list-sku-subscriptions}\n\t * @param skuId - The SKU id to fetch subscriptions for\n\t * @param query - The query options for fetching subscriptions\n\t * @param options - The options for fetching subscriptions\n\t */\n\tpublic async getSKUSubscriptions(\n\t\tskuId: Snowflake,\n\t\tquery: RESTGetAPISKUSubscriptionsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.skuSubscriptions(skuId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPISKUSubscriptionsResult>;\n\t}\n\n\t/**\n\t * Fetches a subscription for an SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/subscription#get-sku-subscription}\n\t * @param skuId - The SKU id to fetch subscription for\n\t * @param subscriptionId - The subscription id to fetch\n\t * @param options - The options for fetching the subscription\n\t */\n\tpublic async getSKUSubscription(\n\t\tskuId: Snowflake,\n\t\tsubscriptionId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.skuSubscription(skuId, subscriptionId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPISKUSubscriptionResult>;\n\t}\n\n\t/**\n\t * Fetches the entitlements for an application.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#list-entitlements}\n\t * @param applicationId - The application id to fetch entitlements for\n\t * @param query - The query options for fetching entitlements\n\t * @param options - The options for fetching entitlements\n\t */\n\tpublic async getEntitlements(\n\t\tapplicationId: Snowflake,\n\t\tquery: RESTGetAPIEntitlementsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.entitlements(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPIEntitlementsResult>;\n\t}\n\n\t/**\n\t * Fetches an entitlement for an application.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#get-entitlement}\n\t * @param applicationId - The application id to fetch the entitlement for\n\t * @param entitlementId - The entitlement id to fetch\n\t * @param options - The options for fetching the entitlement\n\t */\n\tpublic async getEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tentitlementId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.entitlement(applicationId, entitlementId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIEntitlementResult>;\n\t}\n\n\t/**\n\t * Creates a test entitlement for an application's SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#create-test-entitlement}\n\t * @param applicationId - The application id to create the entitlement for\n\t * @param body - The data for creating the entitlement\n\t * @param options - The options for creating the entitlement\n\t */\n\tpublic async createTestEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPostAPIEntitlementJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.entitlements(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIEntitlementResult>;\n\t}\n\n\t/**\n\t * Deletes a test entitlement for an application's SKU.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#delete-test-entitlement}\n\t * @param applicationId - The application id to delete the entitlement for\n\t * @param entitlementId - The entitlement id to delete\n\t * @param options - The options for deleting the entitlement\n\t */\n\tpublic async deleteTestEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tentitlementId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.entitlement(applicationId, entitlementId), { auth, signal });\n\t}\n\n\t/**\n\t * Marks a given entitlement for the user as consumed. Only available for One-Time Purchase consumable SKUs.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/entitlement#consume-an-entitlement}\n\t * @param applicationId - The application id to consume the entitlement for\n\t * @param entitlementId - The entitlement id to consume\n\t * @param options - The options for consuming the entitlement\n\t */\n\tpublic async consumeEntitlement(\n\t\tapplicationId: Snowflake,\n\t\tentitlementId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.consumeEntitlement(applicationId, entitlementId), { auth, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { type RequestData, type REST, makeURLSearchParams } from '@discordjs/rest';\nimport {\n\tRoutes,\n\tRouteBases,\n\ttype RESTOAuth2AuthorizationQuery,\n\ttype RESTPostOAuth2RefreshTokenURLEncodedData,\n\ttype RESTPostOAuth2RefreshTokenResult,\n\ttype RESTPostOAuth2ClientCredentialsURLEncodedData,\n\ttype RESTPostOAuth2ClientCredentialsResult,\n\ttype RESTGetAPIOAuth2CurrentAuthorizationResult,\n\ttype RESTGetAPIOAuth2CurrentApplicationResult,\n\ttype RESTPostOAuth2AccessTokenURLEncodedData,\n\ttype RESTPostOAuth2AccessTokenResult,\n\ttype RESTPostOAuth2TokenRevocationQuery,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class OAuth2API {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Creates an OAuth2 authorization URL given the options\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-authorization-url-example}\n\t * @param options - The options for creating the authorization URL\n\t */\n\tpublic generateAuthorizationURL(options: RESTOAuth2AuthorizationQuery) {\n\t\tconst url = new URL(`${RouteBases.api}${Routes.oauth2Authorization()}`);\n\t\turl.search = makeURLSearchParams(options).toString();\n\t\treturn url.toString();\n\t}\n\n\t/**\n\t * Performs an OAuth2 token exchange, giving you an access token\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-access-token-exchange-example}\n\t * @param body - The body of the token exchange request\n\t * @param options - The options for the token exchange request\n\t */\n\tpublic async tokenExchange(\n\t\tbody: RESTPostOAuth2AccessTokenURLEncodedData,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.oauth2TokenExchange(), {\n\t\t\tbody: makeURLSearchParams<RESTPostOAuth2AccessTokenURLEncodedData>(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostOAuth2AccessTokenResult>;\n\t}\n\n\t/**\n\t * Refreshes an OAuth2 access token, giving you a new one\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-refresh-token-exchange-example}\n\t * @param body - The options for the refresh token request\n\t * @param options - The options for the refresh token request\n\t */\n\tpublic async refreshToken(\n\t\tbody: RESTPostOAuth2RefreshTokenURLEncodedData,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.oauth2TokenExchange(), {\n\t\t\tbody: makeURLSearchParams<RESTPostOAuth2RefreshTokenURLEncodedData>(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostOAuth2RefreshTokenResult>;\n\t}\n\n\t/**\n\t * Fetches the bearer token for the current application\n\t *\n\t * @remarks\n\t * This is primarily used for testing purposes\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#client-credentials-grant}\n\t * @param body - The options for the client credentials grant request\n\t * @param options - The options for the client credentials grant request\n\t */\n\tpublic async getToken(\n\t\tbody: RESTPostOAuth2ClientCredentialsURLEncodedData,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.oauth2TokenExchange(), {\n\t\t\tbody: makeURLSearchParams(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostOAuth2ClientCredentialsResult>;\n\t}\n\n\t/**\n\t * Fetches the current bot's application information\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information}\n\t * @param options - The options for the current bot application information request\n\t */\n\tpublic async getCurrentBotApplicationInformation({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.oauth2CurrentApplication(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIOAuth2CurrentApplicationResult>;\n\t}\n\n\t/**\n\t * Fetches the current authorization information\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#get-current-authorization-information}\n\t * @param options - The options for the current authorization information request\n\t */\n\tpublic async getCurrentAuthorizationInformation({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.oauth2CurrentAuthorization(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIOAuth2CurrentAuthorizationResult>;\n\t}\n\n\t/**\n\t * Revokes an OAuth2 token\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/oauth2#authorization-code-grant-token-revocation-example}\n\t * @param applicationId - The application id\n\t * @param applicationSecret - The application secret\n\t * @param body - The body of the token revocation request\n\t * @param options - The options for the token revocation request\n\t */\n\tpublic async revokeToken(\n\t\tapplicationId: Snowflake,\n\t\tapplicationSecret: string,\n\t\tbody: RESTPostOAuth2TokenRevocationQuery,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.oauth2TokenRevocation(), {\n\t\t\tbody: makeURLSearchParams(body),\n\t\t\tpassThroughBody: true,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Basic ${btoa(`${applicationId}:${applicationSecret}`)}`,\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t},\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t});\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIPollAnswerVotersQuery,\n\ttype RESTGetAPIPollAnswerVotersResult,\n\ttype RESTPostAPIPollExpireResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class PollAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Gets the list of users that voted for a specific answer in a poll\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/poll#get-answer-voters}\n\t * @param channelId - The id of the channel containing the message\n\t * @param messageId - The id of the message containing the poll\n\t * @param answerId - The id of the answer to get voters for\n\t * @param query - The query for getting the list of voters\n\t * @param options - The options for getting the list of voters\n\t */\n\tpublic async getAnswerVoters(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\tanswerId: number,\n\t\tquery: RESTGetAPIPollAnswerVotersQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.pollAnswerVoters(channelId, messageId, answerId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t}) as Promise<RESTGetAPIPollAnswerVotersResult>;\n\t}\n\n\t/**\n\t * Immediately expires (i.e. ends) a poll\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/poll#expire-poll}\n\t * @param channelId - The id of the channel containing the message\n\t * @param messageId - The id of the message containing the poll\n\t * @param options - The options for expiring the poll\n\t */\n\tpublic async expirePoll(\n\t\tchannelId: Snowflake,\n\t\tmessageId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.expirePoll(channelId, messageId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIPollExpireResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIApplicationRoleConnectionMetadataResult,\n\ttype RESTPutAPIApplicationRoleConnectionMetadataResult,\n\ttype RESTPutAPIApplicationRoleConnectionMetadataJSONBody,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class RoleConnectionsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Gets the role connection metadata records for the application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records}\n\t * @param applicationId - The id of the application to get role connection metadata records for\n\t * @param options - The options for fetching the role connection metadata records\n\t */\n\tpublic async getMetadataRecords(\n\t\tapplicationId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.applicationRoleConnectionMetadata(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIApplicationRoleConnectionMetadataResult>;\n\t}\n\n\t/**\n\t * Updates the role connection metadata records for the application\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records}\n\t * @param applicationId - The id of the application to update role connection metadata records for\n\t * @param body - The new role connection metadata records\n\t * @param options - The options for updating the role connection metadata records\n\t */\n\tpublic async updateMetadataRecords(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPutAPIApplicationRoleConnectionMetadataJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.applicationRoleConnectionMetadata(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPIApplicationRoleConnectionMetadataResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport { Routes, type RESTGetAPISoundboardDefaultSoundsResult } from 'discord-api-types/v10';\n\nexport class SoundboardSoundsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches all the soundboard default sounds.\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/soundboard#list-default-soundboard-sounds}\n\t * @param options - The options for fetching the soundboard default sounds.\n\t */\n\tpublic async getSoundboardDefaultSounds({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.soundboardDefaultSounds(), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPISoundboardDefaultSoundsResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\ttype Snowflake,\n\ttype RESTGetAPIStageInstanceResult,\n\ttype RESTPatchAPIStageInstanceJSONBody,\n\ttype RESTPatchAPIStageInstanceResult,\n\ttype RESTPostAPIStageInstanceJSONBody,\n\ttype RESTPostAPIStageInstanceResult,\n\tRoutes,\n} from 'discord-api-types/v10';\n\nexport class StageInstancesAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Creates a new stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#create-stage-instance}\n\t * @param body - The data for creating the new stage instance\n\t * @param options - The options for creating the new stage instance\n\t */\n\tpublic async create(\n\t\tbody: RESTPostAPIStageInstanceJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.stageInstances(), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIStageInstanceResult>;\n\t}\n\n\t/**\n\t * Fetches a stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#get-stage-instance}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for fetching the stage instance\n\t */\n\tpublic async get(channelId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.stageInstance(channelId), { auth, signal }) as Promise<RESTGetAPIStageInstanceResult>;\n\t}\n\n\t/**\n\t * Edits a stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#modify-stage-instance}\n\t * @param channelId - The id of the channel\n\t * @param body - The new stage instance data\n\t * @param options - The options for editing the stage instance\n\t */\n\tpublic async edit(\n\t\tchannelId: Snowflake,\n\t\tbody: RESTPatchAPIStageInstanceJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.stageInstance(channelId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\treason,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIStageInstanceResult>;\n\t}\n\n\t/**\n\t * Deletes a stage instance\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/stage-instance#delete-stage-instance}\n\t * @param channelId - The id of the channel\n\t * @param options - The options for deleting the stage instance\n\t */\n\tpublic async delete(\n\t\tchannelId: Snowflake,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.stageInstance(channelId), { auth, reason, signal });\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIStickerPackResult,\n\ttype RESTGetAPIStickerResult,\n\ttype RESTGetStickerPacksResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class StickersAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a sticker pack\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#get-sticker-pack}\n\t * @param packId - The id of the sticker pack\n\t * @param options - The options for fetching the sticker pack\n\t */\n\tpublic async getStickerPack(packId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.stickerPack(packId), { auth, signal }) as Promise<RESTGetAPIStickerPackResult>;\n\t}\n\n\t/**\n\t * Fetches all of the sticker packs\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#list-sticker-packs}\n\t * @param options - The options for fetching the sticker packs\n\t */\n\tpublic async getStickers({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.stickerPacks(), { auth, signal }) as Promise<RESTGetStickerPacksResult>;\n\t}\n\n\t/**\n\t * Fetches a sticker\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/sticker#get-sticker}\n\t * @param stickerId - The id of the sticker\n\t * @param options - The options for fetching the sticker\n\t */\n\tpublic async get(stickerId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.sticker(stickerId), { auth, signal }) as Promise<RESTGetAPIStickerResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIChannelThreadMemberQuery,\n\ttype RESTGetAPIChannelThreadMemberResult,\n\ttype RESTGetAPIChannelThreadMembersResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class ThreadsAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Adds the current user to a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#join-thread}\n\t * @param threadId - The id of the thread to join\n\t * @param options - The options for joining the thread\n\t */\n\tpublic async join(threadId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.put(Routes.threadMembers(threadId, '@me'), { auth, signal });\n\t}\n\n\t/**\n\t * Adds a member to a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#add-thread-member}\n\t * @param threadId - The id of the thread to add the member to\n\t * @param userId - The id of the user to add to the thread\n\t * @param options - The options for adding the member to the thread\n\t */\n\tpublic async addMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.put(Routes.threadMembers(threadId, userId), { auth, signal });\n\t}\n\n\t/**\n\t * Removes the current user from a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#leave-thread}\n\t * @param threadId - The id of the thread to leave\n\t * @param options - The options for leaving the thread\n\t */\n\tpublic async leave(threadId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.delete(Routes.threadMembers(threadId, '@me'), { auth, signal });\n\t}\n\n\t/**\n\t * Removes a member from a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#remove-thread-member}\n\t * @param threadId - The id of the thread to remove the member from\n\t * @param userId - The id of the user to remove from the thread\n\t * @param options - The options for removing the member from the thread\n\t */\n\tpublic async removeMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.threadMembers(threadId, userId), { auth, signal });\n\t}\n\n\t/**\n\t * Fetches a member of a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-thread-member}\n\t * @param threadId - The id of the thread to fetch the member from\n\t * @param userId - The id of the user\n\t * @param query - The query for fetching the member\n\t * @param options - The options for fetching the member\n\t */\n\tpublic async getMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tquery: RESTGetAPIChannelThreadMemberQuery & { with_member: true },\n\t\toptions?: Pick<RequestData, 'auth' | 'signal'>,\n\t): Promise<Required<Pick<RESTGetAPIChannelThreadMemberResult, 'member'>> & RESTGetAPIChannelThreadMemberResult>;\n\n\t/**\n\t * Fetches a member of a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#get-thread-member}\n\t * @param threadId - The id of the thread to fetch the member from\n\t * @param userId - The id of the user\n\t * @param query - The query for fetching the member\n\t * @param options - The options for fetching the member\n\t */\n\tpublic async getMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tquery?: RESTGetAPIChannelThreadMemberQuery,\n\t\toptions?: Pick<RequestData, 'auth' | 'signal'>,\n\t): Promise<RESTGetAPIChannelThreadMemberResult>;\n\n\tpublic async getMember(\n\t\tthreadId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tquery: RESTGetAPIChannelThreadMemberQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.threadMembers(threadId, userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t});\n\t}\n\n\t/**\n\t * Fetches all members of a thread\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/channel#list-thread-members}\n\t * @param threadId - The id of the thread to fetch the members from\n\t * @param options - The options for fetching the members\n\t */\n\tpublic async getAllMembers(threadId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.threadMembers(threadId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIChannelThreadMembersResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPICurrentUserApplicationRoleConnectionResult,\n\ttype RESTGetAPICurrentUserConnectionsResult,\n\ttype RESTGetAPICurrentUserGuildsQuery,\n\ttype RESTGetAPICurrentUserGuildsResult,\n\ttype RESTGetAPICurrentUserResult,\n\ttype RESTGetAPIUserResult,\n\ttype RESTGetCurrentUserGuildMemberResult,\n\ttype RESTPatchAPICurrentGuildMemberJSONBody,\n\ttype RESTPatchAPICurrentUserJSONBody,\n\ttype RESTPatchAPICurrentUserResult,\n\ttype RESTPatchAPIGuildMemberResult,\n\ttype RESTPostAPICurrentUserCreateDMChannelResult,\n\ttype RESTPutAPICurrentUserApplicationRoleConnectionJSONBody,\n\ttype RESTPutAPICurrentUserApplicationRoleConnectionResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport class UsersAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a user by their id\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-user}\n\t * @param userId - The id of the user to fetch\n\t * @param options - The options for fetching the user\n\t */\n\tpublic async get(userId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.user(userId), { auth, signal }) as Promise<RESTGetAPIUserResult>;\n\t}\n\n\t/**\n\t * Returns the user object of the requester's account\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-current-user}\n\t * @param options - The options for fetching the current user\n\t */\n\tpublic async getCurrent({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.user('@me'), { auth, signal }) as Promise<RESTGetAPICurrentUserResult>;\n\t}\n\n\t/**\n\t * Returns a list of partial guild objects the current user is a member of\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-current-user-guilds}\n\t * @param query - The query options for fetching the current user's guilds\n\t * @param options - The options for fetching the guilds\n\t */\n\tpublic async getGuilds(\n\t\tquery: RESTGetAPICurrentUserGuildsQuery = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.userGuilds(), {\n\t\t\tauth,\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPICurrentUserGuildsResult>;\n\t}\n\n\t/**\n\t * Leaves the guild with the given id\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#leave-guild}\n\t * @param guildId - The id of the guild\n\t * @param options - The options for leaving the guild\n\t */\n\tpublic async leaveGuild(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\tawait this.rest.delete(Routes.userGuild(guildId), { auth, signal });\n\t}\n\n\t/**\n\t * Edits the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#modify-current-user}\n\t * @param body - The new data for the current user\n\t * @param options - The options for editing the user\n\t */\n\tpublic async edit(\n\t\tbody: RESTPatchAPICurrentUserJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.user('@me'), { auth, body, signal }) as Promise<RESTPatchAPICurrentUserResult>;\n\t}\n\n\t/**\n\t * Fetches the guild member for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-current-user-guild-member}\n\t * @param guildId - The id of the guild\n\t * @param options - The options for fetching the guild member\n\t */\n\tpublic async getGuildMember(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.userGuildMember(guildId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetCurrentUserGuildMemberResult>;\n\t}\n\n\t/**\n\t * Edits the guild member for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}\n\t * @param guildId - The id of the guild\n\t * @param body - The new data for the guild member\n\t * @param options - The options for editing the guild member\n\t */\n\tpublic async editCurrentGuildMember(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPICurrentGuildMemberJSONBody = {},\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildMember(guildId, '@me'), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildMemberResult>;\n\t}\n\n\t/**\n\t * Opens a new DM channel with a user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#create-dm}\n\t * @param userId - The id of the user to open a DM channel with\n\t * @param options - The options for opening the DM\n\t */\n\tpublic async createDM(userId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.post(Routes.userChannels(), {\n\t\t\tauth,\n\t\t\tbody: { recipient_id: userId },\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPICurrentUserCreateDMChannelResult>;\n\t}\n\n\t/**\n\t * Gets the current user's connections\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-user-connections}\n\t * @param options - The options for fetching the user's connections\n\t */\n\tpublic async getConnections({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.userConnections(), { auth, signal }) as Promise<RESTGetAPICurrentUserConnectionsResult>;\n\t}\n\n\t/**\n\t * Gets the current user's active application role connection\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#get-user-application-role-connection}\n\t * @param applicationId - The id of the application\n\t * @param options - The options for fetching the role connections\n\t */\n\tpublic async getApplicationRoleConnection(\n\t\tapplicationId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.userApplicationRoleConnection(applicationId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPICurrentUserApplicationRoleConnectionResult>;\n\t}\n\n\t/**\n\t * Updates the current user's application role connection\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/user#update-user-application-role-connection}\n\t * @param applicationId - The id of the application\n\t * @param body - The data for updating the application role connection\n\t * @param options - The options for updating the application role connection\n\t */\n\tpublic async updateApplicationRoleConnection(\n\t\tapplicationId: Snowflake,\n\t\tbody: RESTPutAPICurrentUserApplicationRoleConnectionJSONBody,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.put(Routes.userApplicationRoleConnection(applicationId), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPutAPICurrentUserApplicationRoleConnectionResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { RequestData, REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype Snowflake,\n\ttype RESTGetAPIVoiceRegionsResult,\n\ttype RESTGetAPIGuildVoiceStateUserResult,\n\ttype RESTGetAPIGuildVoiceStateCurrentMemberResult,\n\ttype RESTPatchAPIGuildVoiceStateUserJSONBody,\n\ttype RESTPatchAPIGuildVoiceStateCurrentMemberResult,\n\ttype RESTPatchAPIGuildVoiceStateCurrentMemberJSONBody,\n\ttype RESTPatchAPIGuildVoiceStateUserResult,\n} from 'discord-api-types/v10';\n\nexport class VoiceAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches all voice regions\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#list-voice-regions}\n\t * @param options - The options for fetching the voice regions\n\t */\n\tpublic async getVoiceRegions({ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.voiceRegions(), { auth, signal }) as Promise<RESTGetAPIVoiceRegionsResult>;\n\t}\n\n\t/**\n\t * Fetches voice state of a user by their id\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#get-user-voice-state}\n\t * @param options - The options for fetching user voice state\n\t */\n\tpublic async getUserVoiceState(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.guildVoiceState(guildId, userId), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildVoiceStateUserResult>;\n\t}\n\n\t/**\n\t * Fetches the current user's voice state\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#get-current-user-voice-state}\n\t * @param options - The options for fetching user voice state\n\t */\n\tpublic async getVoiceState(guildId: Snowflake, { auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {}) {\n\t\treturn this.rest.get(Routes.guildVoiceState(guildId, '@me'), {\n\t\t\tauth,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIGuildVoiceStateCurrentMemberResult>;\n\t}\n\n\t/**\n\t * Edits a user's voice state in a guild\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#modify-user-voice-state}\n\t * @param guildId - The id of the guild to edit the current user's voice state in\n\t * @param userId - The id of the user to edit the voice state for\n\t * @param body - The data for editing the voice state\n\t * @param options - The options for editing the voice state\n\t */\n\tpublic async editUserVoiceState(\n\t\tguildId: Snowflake,\n\t\tuserId: Snowflake,\n\t\tbody: RESTPatchAPIGuildVoiceStateUserJSONBody,\n\t\t{ auth, reason, signal }: Pick<RequestData, 'auth' | 'reason' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildVoiceState(guildId, userId), {\n\t\t\tauth,\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildVoiceStateUserResult>;\n\t}\n\n\t/**\n\t * Edits the voice state for the current user\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/voice#modify-current-user-voice-state}\n\t * @param guildId - The id of the guild\n\t * @param body - The data for editing the voice state\n\t * @param options - The options for editing the voice state\n\t */\n\tpublic async editVoiceState(\n\t\tguildId: Snowflake,\n\t\tbody: RESTPatchAPIGuildVoiceStateCurrentMemberJSONBody = {},\n\t\t{ auth, signal }: Pick<RequestData, 'auth' | 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.guildVoiceState(guildId, '@me'), {\n\t\t\tauth,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPatchAPIGuildVoiceStateCurrentMemberResult>;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport { makeURLSearchParams, type RequestData, type RawFile, type REST } from '@discordjs/rest';\nimport {\n\tRoutes,\n\ttype RESTGetAPIWebhookWithTokenMessageQuery,\n\ttype RESTGetAPIWebhookWithTokenMessageResult,\n\ttype RESTGetAPIWebhookResult,\n\ttype RESTPatchAPIWebhookJSONBody,\n\ttype RESTPatchAPIWebhookResult,\n\ttype RESTPatchAPIWebhookWithTokenMessageJSONBody,\n\ttype RESTPatchAPIWebhookWithTokenMessageQuery,\n\ttype RESTPatchAPIWebhookWithTokenMessageResult,\n\ttype RESTPostAPIWebhookWithTokenGitHubQuery,\n\ttype RESTPostAPIWebhookWithTokenJSONBody,\n\ttype RESTPostAPIWebhookWithTokenQuery,\n\ttype RESTPostAPIWebhookWithTokenSlackQuery,\n\ttype RESTPostAPIWebhookWithTokenWaitResult,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\n\nexport type CreateWebhookMessageOptions = RESTPostAPIWebhookWithTokenJSONBody &\n\tRESTPostAPIWebhookWithTokenQuery & { files?: RawFile[] };\n\nexport type EditWebhookMessageOptions = RESTPatchAPIWebhookWithTokenMessageJSONBody &\n\tRESTPatchAPIWebhookWithTokenMessageQuery & {\n\t\tfiles?: RawFile[];\n\t};\n\nexport class WebhooksAPI {\n\tpublic constructor(private readonly rest: REST) {}\n\n\t/**\n\t * Fetches a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook}\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook-with-token}\n\t * @param id - The id of the webhook\n\t * @param options - The options for fetching the webhook\n\t */\n\tpublic async get(\n\t\tid: Snowflake,\n\t\t{ token, signal }: Pick<RequestData, 'signal'> & { token?: string | undefined } = {},\n\t) {\n\t\treturn this.rest.get(Routes.webhook(id, token), {\n\t\t\tsignal,\n\t\t\tauth: !token,\n\t\t}) as Promise<RESTGetAPIWebhookResult>;\n\t}\n\n\t/**\n\t * Edits a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#modify-webhook}\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token}\n\t * @param id - The id of the webhook to edit\n\t * @param body - The new webhook data\n\t * @param options - The options for editing the webhook\n\t */\n\tpublic async edit(\n\t\tid: Snowflake,\n\t\tbody: RESTPatchAPIWebhookJSONBody,\n\t\t{ token, reason, signal }: Pick<RequestData, 'reason' | 'signal'> & { token?: string | undefined } = {},\n\t) {\n\t\treturn this.rest.patch(Routes.webhook(id, token), {\n\t\t\treason,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\tauth: !token,\n\t\t}) as Promise<RESTPatchAPIWebhookResult>;\n\t}\n\n\t/**\n\t * Deletes a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook}\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook-with-token}\n\t * @param id - The id of the webhook to delete\n\t * @param options - The options for deleting the webhook\n\t */\n\tpublic async delete(\n\t\tid: Snowflake,\n\t\t{ token, reason, signal }: Pick<RequestData, 'reason' | 'signal'> & { token?: string | undefined } = {},\n\t) {\n\t\tawait this.rest.delete(Routes.webhook(id, token), {\n\t\t\treason,\n\t\t\tsignal,\n\t\t\tauth: !token,\n\t\t});\n\t}\n\n\t/**\n\t * Executes a webhook and returns the created message\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async execute(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: CreateWebhookMessageOptions & { wait: true },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<RESTPostAPIWebhookWithTokenWaitResult>;\n\n\t/**\n\t * Executes a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async execute(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: CreateWebhookMessageOptions & { wait?: false },\n\t\toptions?: Pick<RequestData, 'signal'>,\n\t): Promise<void>;\n\n\t/**\n\t * Executes a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async execute(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\t{ wait, thread_id, with_components, files, ...body }: CreateWebhookMessageOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.post(Routes.webhook(id, token), {\n\t\t\tquery: makeURLSearchParams({ wait, thread_id, with_components }),\n\t\t\tfiles,\n\t\t\tbody,\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTPostAPIWebhookWithTokenWaitResult | void>;\n\t}\n\n\t/**\n\t * Executes a slack webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-slackcompatible-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param query - The query options for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async executeSlack(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: unknown,\n\t\tquery: RESTPostAPIWebhookWithTokenSlackQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.webhookPlatform(id, token, 'slack'), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tbody,\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Executes a github webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#execute-githubcompatible-webhook}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param body - The data for executing the webhook\n\t * @param query - The options for executing the webhook\n\t * @param options - The options for executing the webhook\n\t */\n\tpublic async executeGitHub(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tbody: unknown,\n\t\tquery: RESTPostAPIWebhookWithTokenGitHubQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.post(Routes.webhookPlatform(id, token, 'github'), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\tauth: false,\n\t\t});\n\t}\n\n\t/**\n\t * Fetches an associated message from a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#get-webhook-message}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param messageId - The id of the message to fetch\n\t * @param query - The query options for fetching the message\n\t * @param options - The options for fetching the message\n\t */\n\tpublic async getMessage(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tmessageId: Snowflake,\n\t\tquery: RESTGetAPIWebhookWithTokenMessageQuery = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.get(Routes.webhookMessage(id, token, messageId), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t}) as Promise<RESTGetAPIWebhookWithTokenMessageResult>;\n\t}\n\n\t/**\n\t * Edits an associated message from a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#edit-webhook-message}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param messageId - The id of the message to edit\n\t * @param body - The data for editing the message\n\t * @param options - The options for editing the message\n\t */\n\tpublic async editMessage(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tmessageId: Snowflake,\n\t\t{ thread_id, with_components, files, ...body }: EditWebhookMessageOptions,\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\treturn this.rest.patch(Routes.webhookMessage(id, token, messageId), {\n\t\t\tquery: makeURLSearchParams({ thread_id, with_components }),\n\t\t\tauth: false,\n\t\t\tbody,\n\t\t\tsignal,\n\t\t\tfiles,\n\t\t}) as Promise<RESTPatchAPIWebhookWithTokenMessageResult>;\n\t}\n\n\t/**\n\t * Deletes an associated message from a webhook\n\t *\n\t * @see {@link https://discord.com/developers/docs/resources/webhook#delete-webhook-message}\n\t * @param id - The id of the webhook\n\t * @param token - The token of the webhook\n\t * @param messageId - The id of the message to delete\n\t * @param query - The options for deleting the message\n\t * @param options - The options for deleting the message\n\t */\n\tpublic async deleteMessage(\n\t\tid: Snowflake,\n\t\ttoken: string,\n\t\tmessageId: Snowflake,\n\t\tquery: { thread_id?: Snowflake } = {},\n\t\t{ signal }: Pick<RequestData, 'signal'> = {},\n\t) {\n\t\tawait this.rest.delete(Routes.webhookMessage(id, token, messageId), {\n\t\t\tquery: makeURLSearchParams(query),\n\t\t\tauth: false,\n\t\t\tsignal,\n\t\t});\n\t}\n}\n","import type { REST } from '@discordjs/rest';\nimport { ApplicationCommandsAPI } from './applicationCommands.js';\nimport { ApplicationsAPI } from './applications.js';\nimport { ChannelsAPI } from './channel.js';\nimport { GatewayAPI } from './gateway.js';\nimport { GuildsAPI } from './guild.js';\nimport { InteractionsAPI } from './interactions.js';\nimport { InvitesAPI } from './invite.js';\nimport { MonetizationAPI } from './monetization.js';\nimport { OAuth2API } from './oauth2.js';\nimport { PollAPI } from './poll.js';\nimport { RoleConnectionsAPI } from './roleConnections.js';\nimport { SoundboardSoundsAPI } from './soundboardSounds.js';\nimport { StageInstancesAPI } from './stageInstances.js';\nimport { StickersAPI } from './sticker.js';\nimport { ThreadsAPI } from './thread.js';\nimport { UsersAPI } from './user.js';\nimport { VoiceAPI } from './voice.js';\nimport { WebhooksAPI } from './webhook.js';\n\nexport * from './applicationCommands.js';\nexport * from './applications.js';\nexport * from './channel.js';\nexport * from './gateway.js';\nexport * from './guild.js';\nexport * from './interactions.js';\nexport * from './invite.js';\nexport * from './monetization.js';\nexport * from './oauth2.js';\nexport * from './poll.js';\nexport * from './roleConnections.js';\nexport * from './soundboardSounds.js';\nexport * from './stageInstances.js';\nexport * from './sticker.js';\nexport * from './thread.js';\nexport * from './user.js';\nexport * from './voice.js';\nexport * from './webhook.js';\n\nexport class API {\n\tpublic readonly applicationCommands: ApplicationCommandsAPI;\n\n\tpublic readonly applications: ApplicationsAPI;\n\n\tpublic readonly channels: ChannelsAPI;\n\n\tpublic readonly gateway: GatewayAPI;\n\n\tpublic readonly guilds: GuildsAPI;\n\n\tpublic readonly interactions: InteractionsAPI;\n\n\tpublic readonly invites: InvitesAPI;\n\n\tpublic readonly monetization: MonetizationAPI;\n\n\tpublic readonly oauth2: OAuth2API;\n\n\tpublic readonly poll: PollAPI;\n\n\tpublic readonly roleConnections: RoleConnectionsAPI;\n\n\tpublic readonly soundboardSounds: SoundboardSoundsAPI;\n\n\tpublic readonly stageInstances: StageInstancesAPI;\n\n\tpublic readonly stickers: StickersAPI;\n\n\tpublic readonly threads: ThreadsAPI;\n\n\tpublic readonly users: UsersAPI;\n\n\tpublic readonly voice: VoiceAPI;\n\n\tpublic readonly webhooks: WebhooksAPI;\n\n\tpublic constructor(public readonly rest: REST) {\n\t\tthis.applicationCommands = new ApplicationCommandsAPI(rest);\n\t\tthis.applications = new ApplicationsAPI(rest);\n\t\tthis.channels = new ChannelsAPI(rest);\n\t\tthis.gateway = new GatewayAPI(rest);\n\t\tthis.guilds = new GuildsAPI(rest);\n\t\tthis.invites = new InvitesAPI(rest);\n\t\tthis.monetization = new MonetizationAPI(rest);\n\t\tthis.oauth2 = new OAuth2API(rest);\n\t\tthis.poll = new PollAPI(rest);\n\t\tthis.roleConnections = new RoleConnectionsAPI(rest);\n\t\tthis.soundboardSounds = new SoundboardSoundsAPI(rest);\n\t\tthis.stageInstances = new StageInstancesAPI(rest);\n\t\tthis.stickers = new StickersAPI(rest);\n\t\tthis.threads = new ThreadsAPI(rest);\n\t\tthis.users = new UsersAPI(rest);\n\t\tthis.voice = new VoiceAPI(rest);\n\t\tthis.webhooks = new WebhooksAPI(rest);\n\t\tthis.interactions = new InteractionsAPI(rest, this.webhooks);\n\t}\n}\n","import type { REST } from '@discordjs/rest';\nimport { calculateShardId, GatewayRateLimitError } from '@discordjs/util';\nimport { WebSocketShardEvents } from '@discordjs/ws';\nimport { DiscordSnowflake } from '@sapphire/snowflake';\nimport { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';\nimport {\n\tGatewayDispatchEvents,\n\tGatewayOpcodes,\n\ttype GatewayApplicationCommandPermissionsUpdateDispatchData,\n\ttype GatewayAutoModerationActionExecutionDispatchData,\n\ttype GatewayAutoModerationRuleCreateDispatchData,\n\ttype GatewayAutoModerationRuleDeleteDispatchData,\n\ttype GatewayAutoModerationRuleUpdateDispatchData,\n\ttype GatewayChannelCreateDispatchData,\n\ttype GatewayChannelDeleteDispatchData,\n\ttype GatewayChannelPinsUpdateDispatchData,\n\ttype GatewayChannelUpdateDispatchData,\n\ttype GatewayEntitlementCreateDispatchData,\n\ttype GatewayEntitlementDeleteDispatchData,\n\ttype GatewayEntitlementUpdateDispatchData,\n\ttype GatewayGuildAuditLogEntryCreateDispatchData,\n\ttype GatewayGuildBanAddDispatchData,\n\ttype GatewayGuildBanRemoveDispatchData,\n\ttype GatewayGuildCreateDispatchData,\n\ttype GatewayGuildDeleteDispatchData,\n\ttype GatewayGuildEmojisUpdateDispatchData,\n\ttype GatewayGuildIntegrationsUpdateDispatchData,\n\ttype GatewayGuildMemberAddDispatchData,\n\ttype GatewayGuildMemberRemoveDispatchData,\n\ttype GatewayGuildMemberUpdateDispatchData,\n\ttype GatewayGuildMembersChunkDispatchData,\n\ttype GatewayGuildRoleCreateDispatchData,\n\ttype GatewayGuildRoleDeleteDispatchData,\n\ttype GatewayGuildRoleUpdateDispatchData,\n\ttype GatewayGuildScheduledEventCreateDispatchData,\n\ttype GatewayGuildScheduledEventDeleteDispatchData,\n\ttype GatewayGuildScheduledEventUpdateDispatchData,\n\ttype GatewayGuildScheduledEventUserAddDispatchData,\n\ttype GatewayGuildScheduledEventUserRemoveDispatchData,\n\ttype GatewayGuildSoundboardSoundCreateDispatch,\n\ttype GatewayGuildSoundboardSoundDeleteDispatch,\n\ttype GatewayGuildSoundboardSoundUpdateDispatch,\n\ttype GatewayGuildSoundboardSoundsUpdateDispatch,\n\ttype GatewayGuildStickersUpdateDispatchData,\n\ttype GatewayGuildUpdateDispatchData,\n\ttype GatewayIntegrationCreateDispatchData,\n\ttype GatewayIntegrationDeleteDispatchData,\n\ttype GatewayIntegrationUpdateDispatchData,\n\ttype GatewayInteractionCreateDispatchData,\n\ttype GatewayInviteCreateDispatchData,\n\ttype GatewayInviteDeleteDispatchData,\n\ttype GatewayMessageCreateDispatchData,\n\ttype GatewayMessageDeleteBulkDispatchData,\n\ttype GatewayMessageDeleteDispatchData,\n\ttype GatewayMessagePollVoteDispatchData,\n\ttype GatewayMessageReactionAddDispatchData,\n\ttype GatewayMessageReactionRemoveAllDispatchData,\n\ttype GatewayMessageReactionRemoveDispatchData,\n\ttype GatewayMessageReactionRemoveEmojiDispatchData,\n\ttype GatewayMessageUpdateDispatchData,\n\ttype GatewayPresenceUpdateData,\n\ttype GatewayPresenceUpdateDispatchData,\n\ttype GatewayRateLimitedDispatchData,\n\ttype GatewayReadyDispatchData,\n\ttype GatewayRequestGuildMembersData,\n\ttype GatewayStageInstanceCreateDispatchData,\n\ttype GatewayStageInstanceDeleteDispatchData,\n\ttype GatewayStageInstanceUpdateDispatchData,\n\ttype GatewaySubscriptionCreateDispatchData,\n\ttype GatewaySubscriptionDeleteDispatchData,\n\ttype GatewaySubscriptionUpdateDispatchData,\n\ttype GatewayThreadCreateDispatchData,\n\ttype GatewayThreadDeleteDispatchData,\n\ttype GatewayThreadListSyncDispatchData,\n\ttype GatewayThreadMemberUpdateDispatchData,\n\ttype GatewayThreadMembersUpdateDispatchData,\n\ttype GatewayThreadUpdateDispatchData,\n\ttype GatewayTypingStartDispatchData,\n\ttype GatewayUserUpdateDispatchData,\n\ttype GatewayVoiceServerUpdateDispatchData,\n\ttype GatewayVoiceStateUpdateData,\n\ttype GatewayVoiceStateUpdateDispatchData,\n\ttype GatewayWebhooksUpdateDispatchData,\n\ttype GatewayRequestSoundboardSoundsData,\n\ttype GatewaySoundboardSoundsDispatchData,\n} from 'discord-api-types/v10';\nimport type { Gateway } from './Gateway.js';\nimport { API } from './api/index.js';\n\nexport interface IntrinsicProps {\n\t/**\n\t * The REST API\n\t */\n\tapi: API;\n\t/**\n\t * The id of the shard that emitted the event\n\t */\n\tshardId: number;\n}\n\nexport interface ToEventProps<Data> extends IntrinsicProps {\n\tdata: Data;\n}\n\nexport interface MappedEvents {\n\t[GatewayDispatchEvents.ApplicationCommandPermissionsUpdate]: [\n\t\tToEventProps<GatewayApplicationCommandPermissionsUpdateDispatchData>,\n\t];\n\t[GatewayDispatchEvents.AutoModerationActionExecution]: [\n\t\tToEventProps<GatewayAutoModerationActionExecutionDispatchData>,\n\t];\n\t[GatewayDispatchEvents.AutoModerationRuleCreate]: [ToEventProps<GatewayAutoModerationRuleCreateDispatchData>];\n\t[GatewayDispatchEvents.AutoModerationRuleDelete]: [ToEventProps<GatewayAutoModerationRuleDeleteDispatchData>];\n\t[GatewayDispatchEvents.AutoModerationRuleUpdate]: [ToEventProps<GatewayAutoModerationRuleUpdateDispatchData>];\n\t[GatewayDispatchEvents.ChannelCreate]: [ToEventProps<GatewayChannelCreateDispatchData>];\n\t[GatewayDispatchEvents.ChannelDelete]: [ToEventProps<GatewayChannelDeleteDispatchData>];\n\t[GatewayDispatchEvents.ChannelPinsUpdate]: [ToEventProps<GatewayChannelPinsUpdateDispatchData>];\n\t[GatewayDispatchEvents.ChannelUpdate]: [ToEventProps<GatewayChannelUpdateDispatchData>];\n\t[GatewayDispatchEvents.EntitlementCreate]: [ToEventProps<GatewayEntitlementCreateDispatchData>];\n\t[GatewayDispatchEvents.EntitlementDelete]: [ToEventProps<GatewayEntitlementDeleteDispatchData>];\n\t[GatewayDispatchEvents.EntitlementUpdate]: [ToEventProps<GatewayEntitlementUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildAuditLogEntryCreate]: [ToEventProps<GatewayGuildAuditLogEntryCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildBanAdd]: [ToEventProps<GatewayGuildBanAddDispatchData>];\n\t[GatewayDispatchEvents.GuildBanRemove]: [ToEventProps<GatewayGuildBanRemoveDispatchData>];\n\t[GatewayDispatchEvents.GuildCreate]: [ToEventProps<GatewayGuildCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildDelete]: [ToEventProps<GatewayGuildDeleteDispatchData>];\n\t[GatewayDispatchEvents.GuildEmojisUpdate]: [ToEventProps<GatewayGuildEmojisUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildIntegrationsUpdate]: [ToEventProps<GatewayGuildIntegrationsUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildMemberAdd]: [ToEventProps<GatewayGuildMemberAddDispatchData>];\n\t[GatewayDispatchEvents.GuildMemberRemove]: [ToEventProps<GatewayGuildMemberRemoveDispatchData>];\n\t[GatewayDispatchEvents.GuildMemberUpdate]: [ToEventProps<GatewayGuildMemberUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildMembersChunk]: [ToEventProps<GatewayGuildMembersChunkDispatchData>];\n\t[GatewayDispatchEvents.GuildRoleCreate]: [ToEventProps<GatewayGuildRoleCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildRoleDelete]: [ToEventProps<GatewayGuildRoleDeleteDispatchData>];\n\t[GatewayDispatchEvents.GuildRoleUpdate]: [ToEventProps<GatewayGuildRoleUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventCreate]: [ToEventProps<GatewayGuildScheduledEventCreateDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventDelete]: [ToEventProps<GatewayGuildScheduledEventDeleteDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventUpdate]: [ToEventProps<GatewayGuildScheduledEventUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventUserAdd]: [ToEventProps<GatewayGuildScheduledEventUserAddDispatchData>];\n\t[GatewayDispatchEvents.GuildScheduledEventUserRemove]: [\n\t\tToEventProps<GatewayGuildScheduledEventUserRemoveDispatchData>,\n\t];\n\t[GatewayDispatchEvents.GuildSoundboardSoundCreate]: [ToEventProps<GatewayGuildSoundboardSoundCreateDispatch>];\n\t[GatewayDispatchEvents.GuildSoundboardSoundDelete]: [ToEventProps<GatewayGuildSoundboardSoundDeleteDispatch>];\n\t[GatewayDispatchEvents.GuildSoundboardSoundUpdate]: [ToEventProps<GatewayGuildSoundboardSoundUpdateDispatch>];\n\t[GatewayDispatchEvents.GuildSoundboardSoundsUpdate]: [ToEventProps<GatewayGuildSoundboardSoundsUpdateDispatch>];\n\t[GatewayDispatchEvents.SoundboardSounds]: [ToEventProps<GatewaySoundboardSoundsDispatchData>];\n\t[GatewayDispatchEvents.GuildStickersUpdate]: [ToEventProps<GatewayGuildStickersUpdateDispatchData>];\n\t[GatewayDispatchEvents.GuildUpdate]: [ToEventProps<GatewayGuildUpdateDispatchData>];\n\t[GatewayDispatchEvents.IntegrationCreate]: [ToEventProps<GatewayIntegrationCreateDispatchData>];\n\t[GatewayDispatchEvents.IntegrationDelete]: [ToEventProps<GatewayIntegrationDeleteDispatchData>];\n\t[GatewayDispatchEvents.IntegrationUpdate]: [ToEventProps<GatewayIntegrationUpdateDispatchData>];\n\t[GatewayDispatchEvents.InteractionCreate]: [ToEventProps<GatewayInteractionCreateDispatchData>];\n\t[GatewayDispatchEvents.InviteCreate]: [ToEventProps<GatewayInviteCreateDispatchData>];\n\t[GatewayDispatchEvents.InviteDelete]: [ToEventProps<GatewayInviteDeleteDispatchData>];\n\t[GatewayDispatchEvents.MessageCreate]: [ToEventProps<GatewayMessageCreateDispatchData>];\n\t[GatewayDispatchEvents.MessageDelete]: [ToEventProps<GatewayMessageDeleteDispatchData>];\n\t[GatewayDispatchEvents.MessageDeleteBulk]: [ToEventProps<GatewayMessageDeleteBulkDispatchData>];\n\t[GatewayDispatchEvents.MessagePollVoteAdd]: [ToEventProps<GatewayMessagePollVoteDispatchData>];\n\t[GatewayDispatchEvents.MessagePollVoteRemove]: [ToEventProps<GatewayMessagePollVoteDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionAdd]: [ToEventProps<GatewayMessageReactionAddDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionRemove]: [ToEventProps<GatewayMessageReactionRemoveDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionRemoveAll]: [ToEventProps<GatewayMessageReactionRemoveAllDispatchData>];\n\t[GatewayDispatchEvents.MessageReactionRemoveEmoji]: [ToEventProps<GatewayMessageReactionRemoveEmojiDispatchData>];\n\t[GatewayDispatchEvents.MessageUpdate]: [ToEventProps<GatewayMessageUpdateDispatchData>];\n\t[GatewayDispatchEvents.PresenceUpdate]: [ToEventProps<GatewayPresenceUpdateDispatchData>];\n\t[GatewayDispatchEvents.RateLimited]: [ToEventProps<GatewayRateLimitedDispatchData>];\n\t[GatewayDispatchEvents.Ready]: [ToEventProps<GatewayReadyDispatchData>];\n\t[GatewayDispatchEvents.Resumed]: [ToEventProps<never>];\n\t[GatewayDispatchEvents.StageInstanceCreate]: [ToEventProps<GatewayStageInstanceCreateDispatchData>];\n\t[GatewayDispatchEvents.StageInstanceDelete]: [ToEventProps<GatewayStageInstanceDeleteDispatchData>];\n\t[GatewayDispatchEvents.StageInstanceUpdate]: [ToEventProps<GatewayStageInstanceUpdateDispatchData>];\n\t[GatewayDispatchEvents.SubscriptionCreate]: [ToEventProps<GatewaySubscriptionCreateDispatchData>];\n\t[GatewayDispatchEvents.SubscriptionDelete]: [ToEventProps<GatewaySubscriptionDeleteDispatchData>];\n\t[GatewayDispatchEvents.SubscriptionUpdate]: [ToEventProps<GatewaySubscriptionUpdateDispatchData>];\n\t[GatewayDispatchEvents.ThreadCreate]: [ToEventProps<GatewayThreadCreateDispatchData>];\n\t[GatewayDispatchEvents.ThreadDelete]: [ToEventProps<GatewayThreadDeleteDispatchData>];\n\t[GatewayDispatchEvents.ThreadListSync]: [ToEventProps<GatewayThreadListSyncDispatchData>];\n\t[GatewayDispatchEvents.ThreadMemberUpdate]: [ToEventProps<GatewayThreadMemberUpdateDispatchData>];\n\t[GatewayDispatchEvents.ThreadMembersUpdate]: [ToEventProps<GatewayThreadMembersUpdateDispatchData>];\n\t[GatewayDispatchEvents.ThreadUpdate]: [ToEventProps<GatewayThreadUpdateDispatchData>];\n\t[GatewayDispatchEvents.TypingStart]: [ToEventProps<GatewayTypingStartDispatchData>];\n\t[GatewayDispatchEvents.UserUpdate]: [ToEventProps<GatewayUserUpdateDispatchData>];\n\t[GatewayDispatchEvents.VoiceServerUpdate]: [ToEventProps<GatewayVoiceServerUpdateDispatchData>];\n\t[GatewayDispatchEvents.VoiceStateUpdate]: [ToEventProps<GatewayVoiceStateUpdateDispatchData>];\n\t[GatewayDispatchEvents.WebhooksUpdate]: [ToEventProps<GatewayWebhooksUpdateDispatchData>];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ManagerShardEventsMap extends MappedEvents {}\n\nexport interface ClientOptions {\n\tgateway: Gateway;\n\trest: REST;\n}\n\nexport interface RequestGuildMembersResult {\n\tmembers: GatewayGuildMembersChunkDispatchData['members'];\n\tnonce: NonNullable<GatewayGuildMembersChunkDispatchData['nonce']>;\n\tnotFound: NonNullable<GatewayGuildMembersChunkDispatchData['not_found']>;\n\tpresences: NonNullable<GatewayGuildMembersChunkDispatchData['presences']>;\n}\n\nfunction createTimer(controller: AbortController, timeout: number) {\n\treturn setTimeout(() => controller.abort(), timeout);\n}\n\nexport class Client extends AsyncEventEmitter<MappedEvents> {\n\tpublic readonly rest: REST;\n\n\tpublic readonly gateway: Gateway;\n\n\tpublic readonly api: API;\n\n\tpublic constructor(options: ClientOptions) {\n\t\tsuper();\n\t\tthis.rest = options.rest;\n\t\tthis.gateway = options.gateway;\n\t\tthis.api = new API(this.rest);\n\n\t\tthis.gateway.on(WebSocketShardEvents.Dispatch, (dispatch, shardId) => {\n\t\t\tthis.emit(dispatch.t, this.toEventProps(dispatch.d, shardId));\n\t\t});\n\t}\n\n\t/**\n\t * Requests guild members from the gateway and returns an async iterator that yields the data from each guild members chunk event.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-guild-members}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each guild members chunk event\n\t * @example\n\t * Requesting all members from a guild\n\t * ```ts\n\t * for await (const { members } of client.requestGuildMembersIterator({ guild_id: '1234567890', query: '', limit: 0 })) {\n\t * \tconsole.log(members);\n\t * }\n\t * ```\n\t */\n\tpublic async *requestGuildMembersIterator(options: GatewayRequestGuildMembersData, timeout = 10_000) {\n\t\tconst shardId = calculateShardId(options.guild_id, await this.gateway.getShardCount());\n\t\tconst nonce = options.nonce ?? DiscordSnowflake.generate().toString();\n\n\t\tconst controller = new AbortController();\n\n\t\tlet timer: NodeJS.Timeout | undefined = createTimer(controller, timeout);\n\n\t\tconst onRatelimit = ({ data }: ToEventProps<GatewayRateLimitedDispatchData>) => {\n\t\t\t// We could verify meta.guild_id === options.guild_id as well, but really, the nonce check is enough\n\t\t\tif (data.meta.nonce === nonce) {\n\t\t\t\tcontroller.abort(new GatewayRateLimitError(data, options));\n\t\t\t}\n\t\t};\n\n\t\tconst cleanup = () => {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\n\t\t\tthis.off(GatewayDispatchEvents.RateLimited, onRatelimit);\n\t\t};\n\n\t\tthis.on(GatewayDispatchEvents.RateLimited, onRatelimit);\n\t\tawait this.gateway.send(shardId, {\n\t\t\top: GatewayOpcodes.RequestGuildMembers,\n\t\t\t// eslint-disable-next-line id-length\n\t\t\td: {\n\t\t\t\t...options,\n\t\t\t\tnonce,\n\t\t\t},\n\t\t});\n\n\t\ttry {\n\t\t\tconst iterator = AsyncEventEmitter.on(this, GatewayDispatchEvents.GuildMembersChunk, {\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tfor await (const [{ data }] of iterator) {\n\t\t\t\tif (data.nonce !== nonce) continue;\n\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = undefined;\n\n\t\t\t\tyield {\n\t\t\t\t\tmembers: data.members,\n\t\t\t\t\tnonce,\n\t\t\t\t\tnotFound: data.not_found ?? null,\n\t\t\t\t\tpresences: data.presences ?? null,\n\t\t\t\t\tchunkIndex: data.chunk_index,\n\t\t\t\t\tchunkCount: data.chunk_count,\n\t\t\t\t};\n\n\t\t\t\tif (data.chunk_index >= data.chunk_count - 1) break;\n\n\t\t\t\t// eslint-disable-next-line require-atomic-updates\n\t\t\t\ttimer = createTimer(controller, timeout);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && error.name === 'AbortError') {\n\t\t\t\tif (error.cause instanceof GatewayRateLimitError) {\n\t\t\t\t\tthrow error.cause;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error('Request timed out');\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tcleanup();\n\t\t}\n\t}\n\n\t/**\n\t * Requests guild members from the gateway.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-guild-members}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each guild members chunk event\n\t * @example\n\t * Requesting specific members from a guild\n\t * ```ts\n\t * const { members } = await client.requestGuildMembers({ guild_id: '1234567890', user_ids: ['9876543210'] });\n\t * ```\n\t */\n\tpublic async requestGuildMembers(options: GatewayRequestGuildMembersData, timeout = 10_000) {\n\t\tconst members: RequestGuildMembersResult['members'] = [];\n\t\tconst notFound: RequestGuildMembersResult['notFound'] = [];\n\t\tconst presences: RequestGuildMembersResult['presences'] = [];\n\t\tconst nonce = options.nonce ?? DiscordSnowflake.generate().toString();\n\n\t\tfor await (const data of this.requestGuildMembersIterator({ ...options, nonce }, timeout)) {\n\t\t\tmembers.push(...data.members);\n\t\t\tif (data.presences) presences.push(...data.presences);\n\t\t\tif (data.notFound) notFound.push(...data.notFound);\n\t\t}\n\n\t\treturn { members, nonce, notFound, presences };\n\t}\n\n\t/**\n\t * Requests soundboard sounds from the gateway and returns an async iterator that yields the data from each soundboard sounds event.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each soundboard sounds\n\t * @example\n\t * Requesting soundboard sounds for specific guilds\n\t * ```ts\n\t * for await (const { guildId, soundboardSounds } of this.requestSoundboardSoundsIterator({\n\t *\tguild_ids: ['1234567890', '9876543210'],\n\t * })) {\n\t *\tconsole.log(`Soundboard sounds for guild ${guildId}:`, soundboardSounds);\n\t * }\n\t * ```\n\t */\n\tpublic async *requestSoundboardSoundsIterator(options: GatewayRequestSoundboardSoundsData, timeout = 10_000) {\n\t\tconst shardCount = await this.gateway.getShardCount();\n\t\tconst shardIds = Map.groupBy(options.guild_ids, (guildId) => calculateShardId(guildId, shardCount));\n\n\t\tconst controller = new AbortController();\n\n\t\tlet timer: NodeJS.Timeout | undefined = createTimer(controller, timeout);\n\n\t\tfor (const [shardId, guildIds] of shardIds) {\n\t\t\tawait this.gateway.send(shardId, {\n\t\t\t\top: GatewayOpcodes.RequestSoundboardSounds,\n\t\t\t\t// eslint-disable-next-line id-length\n\t\t\t\td: {\n\t\t\t\t\t...options,\n\t\t\t\t\tguild_ids: guildIds,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tconst iterator = AsyncEventEmitter.on(this, GatewayDispatchEvents.SoundboardSounds, {\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tconst guildIds = new Set(options.guild_ids);\n\n\t\t\tfor await (const [{ data }] of iterator) {\n\t\t\t\tif (!guildIds.has(data.guild_id)) continue;\n\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = undefined;\n\n\t\t\t\tyield {\n\t\t\t\t\tguildId: data.guild_id,\n\t\t\t\t\tsoundboardSounds: data.soundboard_sounds,\n\t\t\t\t};\n\n\t\t\t\tguildIds.delete(data.guild_id);\n\n\t\t\t\tif (guildIds.size === 0) break;\n\n\t\t\t\ttimer = createTimer(controller, timeout);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && error.name === 'AbortError') {\n\t\t\t\tthrow new Error('Request timed out');\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Requests soundboard sounds from the gateway.\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds}\n\t * @param options - The options for the request\n\t * @param timeout - The timeout for waiting for each soundboard sounds event\n\t * @example\n\t * Requesting soundboard sounds for specific guilds\n\t * ```ts\n\t * const soundboardSounds = await client.requestSoundboardSounds({ guild_ids: ['1234567890', '9876543210'], });\n\t *\n\t * console.log(soundboardSounds.get('1234567890'));\n\t * ```\n\t */\n\tpublic async requestSoundboardSounds(options: GatewayRequestSoundboardSoundsData, timeout = 10_000) {\n\t\tconst soundboardSounds = new Map<\n\t\t\tGatewaySoundboardSoundsDispatchData['guild_id'],\n\t\t\tGatewaySoundboardSoundsDispatchData['soundboard_sounds']\n\t\t>();\n\n\t\tfor await (const data of this.requestSoundboardSoundsIterator(options, timeout)) {\n\t\t\tsoundboardSounds.set(data.guildId, data.soundboardSounds);\n\t\t}\n\n\t\treturn soundboardSounds;\n\t}\n\n\t/**\n\t * Updates the voice state of the bot user\n\t *\n\t * @see {@link https://discord.com/developers/docs/topics/gateway-events#update-voice-state}\n\t * @param options - The options for updating the voice state\n\t */\n\tpublic async updateVoiceState(options: GatewayVoiceStateUpdateData) {\n\t\tconst shardId = calculateShardId(options.guild_id, await this.gateway.getShardCount());\n\n\t\tawait this.gateway.send(shardId, {\n\t\t\top: GatewayOpcodes.VoiceStateUpdate,\n\t\t\t// eslint-disable-next-line id-length\n\t\t\td: options,\n\t\t});\n\t}\n\n\t/**\n\t * Updates the presence of the bot user\n\t *\n\t * @param shardId - The id of the shard to update the presence in\n\t * @param options - The options for updating the presence\n\t */\n\tpublic async updatePresence(shardId: number, options: GatewayPresenceUpdateData) {\n\t\tawait this.gateway.send(shardId, {\n\t\t\top: GatewayOpcodes.PresenceUpdate,\n\t\t\t// eslint-disable-next-line id-length\n\t\t\td: options,\n\t\t});\n\t}\n\n\tprivate toEventProps<ObjectType>(obj: ObjectType, shardId: number): ToEventProps<ObjectType> {\n\t\treturn {\n\t\t\tapi: this.api,\n\t\t\tshardId,\n\t\t\tdata: obj,\n\t\t};\n\t}\n}\n","import type { RawFile } from '@discordjs/rest';\nimport type { APIInteractionResponseCallbackData } from 'discord-api-types/v10';\n\nexport interface DescriptiveRawFile extends RawFile {\n\tdescription?: string;\n}\n\n/**\n * A utility function to create a form data payload given an array of file buffers\n *\n * @param files - The files to create a form data payload for\n * @param options - The additional options for the form data payload\n */\nexport function withFiles(files: DescriptiveRawFile[], options: APIInteractionResponseCallbackData) {\n\tconst body = {\n\t\t...options,\n\t\tattachments: files.map((file, index) => ({\n\t\t\tid: index.toString(),\n\t\t\tdescription: file.description,\n\t\t})),\n\t};\n\n\tconst outputFiles = files.map((file, index) => ({\n\t\tname: file.name ?? index.toString(),\n\t\tdata: file.data,\n\t}));\n\n\treturn { body, files: outputFiles };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,kBAAiE;AACjE,iBAyBO;AAEA,IAAM,yBAAN,MAA6B;AAAA,EAC5B,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EA/BlD,OA8BoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWnC,MAAa,kBACZ,eACA,QAA4C,CAAC,GAC7C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,oBAAoB,aAAa,GAAG;AAAA,MAC/D;AAAA,MACA,WAAO,iCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,eACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,kBAAO,oBAAoB,aAAa,GAAG;AAAA,MAChE;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,eACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,mBAAmB,eAAe,SAAS,GAAG;AAAA,MACzE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,kBACZ,eACA,WACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,kBAAO,mBAAmB,eAAe,SAAS,GAAG;AAAA,MAC3E;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,eACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,kBAAO,mBAAmB,eAAe,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,4BACZ,eACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,oBAAoB,aAAa,GAAG;AAAA,MAC/D;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,iBACZ,eACA,SACA,QAAiD,CAAC,GAClD,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,yBAAyB,eAAe,OAAO,GAAG;AAAA,MAC7E;AAAA,MACA,WAAO,iCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,mBACZ,eACA,SACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,kBAAO,yBAAyB,eAAe,OAAO,GAAG;AAAA,MAC9E;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,gBACZ,eACA,SACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,wBAAwB,eAAe,SAAS,SAAS,GAAG;AAAA,MACvF;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,iBACZ,eACA,SACA,WACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,kBAAO,wBAAwB,eAAe,SAAS,SAAS,GAAG;AAAA,MACzF;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,mBACZ,eACA,SACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,kBAAO,wBAAwB,eAAe,SAAS,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC3G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,2BACZ,eACA,SACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,yBAAyB,eAAe,OAAO,GAAG;AAAA,MAC7E;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,2BACZ,eACA,SACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,8BAA8B,eAAe,SAAS,SAAS,GAAG;AAAA,MAC7F;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,4BACZ,eACA,SACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,oCAAoC,eAAe,OAAO,GAAG;AAAA,MACxF;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,4BACZ,WACA,eACA,SACA,WACA,MACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,IAAI,kBAAO,8BAA8B,eAAe,SAAS,SAAS,GAAG;AAAA,MAC7F,SAAS,EAAE,eAAe,UAAU,UAAU,QAAQ,WAAW,EAAE,CAAC,GAAG;AAAA,MACvE,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACtVA,IAAAA,cAYO;AAEA,IAAM,kBAAN,MAAsB;AAAA,EACrB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAlBlD,OAiB6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS5B,MAAa,WAAW,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACpF,WAAO,KAAK,KAAK,IAAI,mBAAO,mBAAmB,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,YACZ,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,mBAAmB,GAAG;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,UAAU,eAA0B,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC7G,WAAO,KAAK,KAAK,IAAI,mBAAO,kBAAkB,aAAa,GAAG;AAAA,MAC7D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,SACZ,eACA,SACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,iBAAiB,eAAe,OAAO,GAAG;AAAA,MACrE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,YACZ,eACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,kBAAkB,aAAa,GAAG;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,UACZ,eACA,SACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,iBAAiB,eAAe,OAAO,GAAG;AAAA,MACvE;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,YACZ,eACA,SACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,iBAAiB,eAAe,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACzF;AACD;;;ACxIA,IAAAC,eAA+E;AAC/E,IAAAC,cAmCO;AAcA,IAAM,cAAN,MAAkB;AAAA,EACjB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EArDlD,OAoDyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWxB,MAAa,cACZ,WACA,EAAE,OAAO,GAAG,KAAK,GACjB,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,gBAAgB,SAAS,GAAG;AAAA,MACxD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,YACZ,WACA,WACA,EAAE,OAAO,GAAG,KAAK,GACjB,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,eAAe,WAAW,SAAS,GAAG;AAAA,MACnE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,oBACZ,WACA,WACA,OACA,QAAoD,CAAC,GACrD,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,uBAAuB,WAAW,WAAW,mBAAmB,KAAK,CAAC,GAAG;AAAA,MACpG;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAa,yBACZ,WACA,WACA,OACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,0BAA0B,WAAW,WAAW,mBAAmB,KAAK,CAAC,GAAG;AAAA,MACzG;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,0BACZ,WACA,WACA,OACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,2BAA2B,WAAW,WAAW,mBAAmB,KAAK,GAAG,MAAM,GAAG;AAAA,MAClH;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,0BACZ,WACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,2BAA2B,WAAW,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAa,kCACZ,WACA,WACA,OACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,uBAAuB,WAAW,WAAW,mBAAmB,KAAK,CAAC,GAAG;AAAA,MACtG;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAa,mBACZ,WACA,WACA,OACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,IAAI,mBAAO,0BAA0B,WAAW,WAAW,mBAAmB,KAAK,CAAC,GAAG;AAAA,MACtG;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,IAAI,WAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACnG,WAAO,KAAK,KAAK,IAAI,mBAAO,QAAQ,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,KACZ,WACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,QAAQ,SAAS,GAAG;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,OACZ,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,OAAO,mBAAO,QAAQ,SAAS,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,YACZ,WACA,QAAwC,CAAC,GACzC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,gBAAgB,SAAS,GAAG;AAAA,MACvD;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,WAAW,WAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC1G,UAAM,KAAK,KAAK,KAAK,mBAAO,cAAc,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,QACZ,WACA,QAA4C,CAAC,GAC7C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,oBAAoB,SAAS,GAAG;AAAA,MAC3D;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,WACA,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,IAAI,mBAAO,mBAAmB,WAAW,SAAS,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,WACA,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,eAAe,WAAW,SAAS,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,mBACZ,WACA,YACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC7D;AAChB,UAAM,KAAK,KAAK,KAAK,mBAAO,kBAAkB,SAAS,GAAG,EAAE,MAAM,QAAQ,MAAM,EAAE,UAAU,WAAW,GAAG,OAAO,CAAC;AAAA,EACnH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,WACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,eAAe,WAAW,SAAS,GAAG;AAAA,MACjE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,WACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,wBAAwB,WAAW,SAAS,GAAG;AAAA,MAC3E;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,WACA,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,mBAAmB,WAAW,SAAS,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,WACA,kBACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,iBAAiB,SAAS,GAAG;AAAA,MACzD;AAAA,MACA,MAAM,EAAE,oBAAoB,iBAAiB;AAAA,MAC7C;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,WACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,eAAe,SAAS,GAAG;AAAA,MACvD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,WAAW,WAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC1G,WAAO,KAAK,KAAK,IAAI,mBAAO,eAAe,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,aACZ,WACA,MACA,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,QAAQ,WAAW,SAAS,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,kBACZ,WACA,EAAE,SAAS,GAAG,YAAY,GAC1B,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,EAAE,OAAO,GAAG,YAAY,IAAI;AAElC,UAAM,OAAO;AAAA,MACZ,GAAG;AAAA,MACH,SAAS;AAAA,IACV;AAEA,WAAO,KAAK,KAAK,KAAK,mBAAO,QAAQ,SAAS,GAAG;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,mBACZ,WACA,gBACA,QAA+C,CAAC,GAChD,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,eAAe,WAAW,cAAc,GAAG;AAAA,MACtE;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,gCACZ,WACA,QAA+C,CAAC,GAChD,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,6BAA6B,SAAS,GAAG;AAAA,MACpE;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,WACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,gBAAgB,SAAS,GAAG;AAAA,MACxD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,YAAY,WAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC3G,WAAO,KAAK,KAAK,IAAI,mBAAO,gBAAgB,SAAS,GAAG;AAAA,MACvD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,wBACZ,WACA,aACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,IAAI,mBAAO,kBAAkB,WAAW,WAAW,GAAG;AAAA,MACrE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,0BACZ,WACA,aACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,kBAAkB,WAAW,WAAW,GAAG;AAAA,MACxE;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,WACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,oBAAoB,SAAS,GAAG;AAAA,MAC5D;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,oBACZ,WACA,QACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,IAAI,mBAAO,iBAAiB,WAAW,MAAM,GAAG;AAAA,MAC/D;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,uBACZ,WACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,iBAAiB,WAAW,MAAM,GAAG;AAAA,MAClE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;AC5uBA,IAAAC,cAAsF;AAE/E,IAAM,aAAN,MAAiB;AAAA,EAChB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EANlD,OAKwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASvB,MAAa,IAAI,EAAE,OAAO,IAAiC,CAAC,GAAG;AAC9D,WAAO,KAAK,KAAK,IAAI,mBAAO,QAAQ,GAAG;AAAA,MACtC,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,OAAO,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAChF,WAAO,KAAK,KAAK,IAAI,mBAAO,WAAW,GAAG;AAAA,MACzC;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;AC/BA,IAAAC,eAA+E;AAC/E,IAAAC,cAuGO;AAMA,IAAM,YAAN,MAAgB;AAAA,EACf,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAjHlD,OAgHuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWtB,MAAa,IACZ,SACA,QAA8B,CAAC,GAC/B,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,MAAM,OAAO,GAAG;AAAA,MAC3C;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,WAAW,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACxG,WAAO,KAAK,KAAK,IAAI,mBAAO,aAAa,OAAO,GAAG;AAAA,MAClD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,KACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,MAAM,OAAO,GAAG;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,UACZ,SACA,QACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,YAAY,SAAS,MAAM,GAAG;AAAA,MACzD;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,SACA,QAAqC,CAAC,GACtC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,aAAa,OAAO,GAAG;AAAA,MAClD;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,YAAY,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACzG,WAAO,KAAK,KAAK,IAAI,mBAAO,cAAc,OAAO,GAAG;AAAA,MACnD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,cAAc,OAAO,GAAG;AAAA,MACpD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,MAAM,mBAAO,cAAc,OAAO,GAAG,EAAE,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EACpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,iBAAiB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC9G,WAAO,KAAK,KAAK,IAAI,mBAAO,mBAAmB,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,SACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,SAAS,SAAS,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,SACA,QAAkC,CAAC,GACnC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,UAAU,OAAO,GAAG;AAAA,MAC/C;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,QACZ,SACA,QACA,OAAmC,CAAC,GACpC,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,IAAI,mBAAO,SAAS,SAAS,MAAM,GAAG,EAAE,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,UACZ,SACA,QACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,SAAS,SAAS,MAAM,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,aAAa,OAAO,GAAG;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,SAAS,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACtG,WAAO,KAAK,KAAK,IAAI,mBAAO,WAAW,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,QACZ,SACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,UAAU,SAAS,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,WAAW,OAAO,GAAG;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,WAAW,OAAO,GAAG;AAAA,MAClD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,SACZ,SACA,QACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,UAAU,SAAS,MAAM,GAAG;AAAA,MACzD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,SACA,QACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,UAAU,SAAS,MAAM,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,SACA,QAAwC,CAAC,GACzC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,WAAW,OAAO,GAAG;AAAA,MAChD;AAAA,MACA;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,IACjC,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,SACA,OAAsC,CAAC,GACvC,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,WAAW,OAAO,GAAG;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,gBAAgB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC7G,WAAO,KAAK,KAAK,IAAI,mBAAO,kBAAkB,OAAO,GAAG;AAAA,MACvD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,WAAW,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACxG,WAAO,KAAK,KAAK,IAAI,mBAAO,aAAa,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,gBAAgB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC7G,WAAO,KAAK,KAAK,IAAI,mBAAO,kBAAkB,OAAO,GAAG;AAAA,MACvD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,kBACZ,SACA,eACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,iBAAiB,SAAS,aAAa,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,kBAAkB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC/G,WAAO,KAAK,KAAK,IAAI,mBAAO,oBAAoB,OAAO,GAAG;AAAA,MACzD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,mBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,oBAAoB,OAAO,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,UAAU,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACvG,WAAO,KAAK,KAAK,IAAI,mBAAO,gBAAgB,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,aAAa,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC1G,WAAO,KAAK,KAAK,IAAI,mBAAO,eAAe,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,eACZ,SACA,OACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,iBAAiB,OAAO,GAAG;AAAA,MACtD;AAAA,MACA,WAAO,kCAAoB,EAAE,MAAM,CAAC;AAAA,MACpC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,iBAAiB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC9G,WAAO,KAAK,KAAK,IAAI,mBAAO,mBAAmB,OAAO,GAAG;AAAA,MACxD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,kBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,mBAAmB,OAAO,GAAG;AAAA,MAC1D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,UAAU,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACvG,WAAO,KAAK,KAAK,IAAI,mBAAO,YAAY,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,SACZ,SACA,SACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,WAAW,SAAS,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,YACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,YAAY,OAAO,GAAG;AAAA,MAClD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,UACZ,SACA,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,WAAW,SAAS,OAAO,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,YACZ,SACA,SACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,WAAW,SAAS,OAAO,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,mBACZ,SACA,QAA6C,CAAC,GAC9C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,qBAAqB,OAAO,GAAG;AAAA,MAC1D;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,qBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,qBAAqB,OAAO,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,kBACZ,SACA,SACA,QAA4C,CAAC,GAC7C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,oBAAoB,SAAS,OAAO,GAAG;AAAA,MAClE;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,mBACZ,SACA,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,oBAAoB,SAAS,OAAO,GAAG;AAAA,MACpE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,qBACZ,SACA,SACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,oBAAoB,SAAS,OAAO,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,uBACZ,SACA,SACA,QAAiD,CAAC,GAClD,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,yBAAyB,SAAS,OAAO,GAAG;AAAA,MACvE;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,aAAa,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC1G,WAAO,KAAK,KAAK,IAAI,mBAAO,eAAe,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,SACA,cACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,cAAc,SAAS,YAAY,GAAG;AAAA,MACjE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,aACZ,SACA,cACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,cAAc,SAAS,YAAY,GAAG;AAAA,MACnE;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,eACZ,SACA,cACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,cAAc,SAAS,YAAY,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,YAAY,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACzG,WAAO,KAAK,KAAK,IAAI,mBAAO,cAAc,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,SACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,aAAa,SAAS,SAAS,GAAG;AAAA,MAC7D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,SACA,EAAE,MAAM,GAAG,KAAK,GAChB,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,WAAW,EAAE,GAAG,MAAM,KAAK,OAAO;AAExC,WAAO,KAAK,KAAK,KAAK,mBAAO,cAAc,OAAO,GAAG;AAAA,MACpD;AAAA,MACA,kBAAkB;AAAA,MAClB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,YACZ,SACA,WACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,aAAa,SAAS,SAAS,GAAG;AAAA,MAC/D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cACZ,SACA,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,aAAa,SAAS,SAAS,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,SACA,QAAiC,CAAC,GAClC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,cAAc,OAAO,GAAG;AAAA,MACnD;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,uBAAuB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACpH,WAAO,KAAK,KAAK,IAAI,mBAAO,yBAAyB,OAAO,GAAG;AAAA,MAC9D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,sBACZ,SACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,wBAAwB,SAAS,MAAM,GAAG;AAAA,MACrE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,yBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,yBAAyB,OAAO,GAAG;AAAA,MAC/D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,uBACZ,SACA,QACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,wBAAwB,SAAS,MAAM,GAAG;AAAA,MACvE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,yBACZ,SACA,QACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,wBAAwB,SAAS,MAAM,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,UACZ,SACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,YAAY,SAAS,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,SACA,OACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,mBAAmB,OAAO,GAAG;AAAA,MACxD;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,WACZ,SACA,QACA,OAAwC,CAAC,GACzC,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,YAAY,SAAS,MAAM,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,SACA,QACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,OAAO,mBAAO,YAAY,SAAS,MAAM,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,gBACZ,SACA,QACA,QACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,IAAI,mBAAO,gBAAgB,SAAS,QAAQ,MAAM,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,qBACZ,SACA,QACA,QACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,gBAAgB,SAAS,QAAQ,MAAM,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,YAAY,cAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC3G,WAAO,KAAK,KAAK,IAAI,mBAAO,SAAS,YAAY,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,eACZ,SACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,eAAe,OAAO,GAAG;AAAA,MACrD;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,YAAY,IAAe,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACpG,WAAO,KAAK,KAAK,IAAI,mBAAO,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,cAAc,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC3G,WAAO,KAAK,KAAK,IAAI,mBAAO,gBAAgB,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,eACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,gBAAgB,OAAO,GAAG;AAAA,MACrD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,oBAAoB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACjH,WAAO,KAAK,KAAK,IAAI,mBAAO,sBAAsB,OAAO,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,mBACZ,SACA,SACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,qBAAqB,SAAS,OAAO,GAAG;AAAA,MACnE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,sBACZ,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,sBAAsB,OAAO,GAAG;AAAA,MAC5D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,oBACZ,SACA,SACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,mBAAO,qBAAqB,SAAS,OAAO,GAAG;AAAA,MACrE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,sBACZ,SACA,SACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,qBAAqB,SAAS,OAAO,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC/F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,SACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,qBAAqB,OAAO,GAAG;AAAA,MAC1D;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,oBAAoB,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACjH,WAAO,KAAK,KAAK,IAAI,mBAAO,sBAAsB,OAAO,GAAG;AAAA,MAC3D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACp8CA,IAAAC,eAA+E;AAC/E,IAAAC,cAWO;AAsBA,IAAM,kBAAN,MAAsB;AAAA,EACrB,YACW,MACA,UAChB;AAFgB;AACA;AAAA,EACf;AAAA,EAxCJ,OAoC6B;AAAA;AAAA;AAAA,EAsD5B,MAAa,MACZ,eACA,kBACA,EAAE,OAAO,eAAe,GAAG,KAAK,GAChC,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,QAC9B;AAAA,MACD;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AAAA,EAkDA,MAAa,MACZ,eACA,kBACA,EAAE,eAAe,GAAG,KAAK,IAA2C,CAAC,GACrE,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,QAC9B;AAAA,MACD;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AAAA,EAkDA,MAAa,mBACZ,eACA,kBACA,EAAE,cAAc,IAAyC,CAAC,GAC1D,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,MAC/B;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,SACZ,eACA,kBACA,MACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,SAAS,QAAQ,eAAe,kBAAkB,EAAE,GAAG,MAAM,MAAM,KAAK,GAAG,EAAE,OAAO,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,UACZ,eACA,kBACA,cACA,WACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,SAAS,YAAY,eAAe,kBAAkB,aAAa,aAAa,cAAc;AAAA,MACzG;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,eACA,kBACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,SAAS;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,EAAE,OAAO;AAAA,IACV;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,YACZ,eACA,kBACA,WACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,KAAK,SAAS,cAAc,eAAe,kBAAkB,aAAa,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;AAAA,EAC5G;AAAA,EAkDA,MAAa,cACZ,eACA,kBACA,EAAE,OAAO,eAAe,GAAG,KAAK,GAChC,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,QAC9B;AAAA,MACD;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AAAA,EAkDA,MAAa,2BACZ,eACA,kBACA,EAAE,eAAe,GAAG,KAAK,GACzB,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,QAC9B;AAAA,MACD;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AAAA,EAkDA,MAAa,YACZ,eACA,kBACA,EAAE,eAAe,GAAG,KAAK,GACzB,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,QAC9B;AAAA,MACD;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AAAA,EAkDA,MAAa,eACZ,eACA,kBACA,EAAE,cAAc,IAAyC,CAAC,GAC1D,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK,mBAAO,oBAAoB,eAAe,gBAAgB,GAAG;AAAA,MAClG,WAAO,kCAAoB,EAAE,cAAc,CAAC;AAAA,MAC5C,MAAM;AAAA,MACN,MAAM;AAAA,QACL,MAAM,oCAAwB;AAAA,MAC/B;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO,gBAAgB,WAAW;AAAA,EACnC;AACD;;;AC9kBA,IAAAC,eAAiE;AACjE,IAAAC,cAAgF;AAEzE,IAAM,aAAN,MAAiB;AAAA,EAChB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EANlD,OAKwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWvB,MAAa,IACZ,MACA,QAA+B,CAAC,GAChC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,OAAO,IAAI,GAAG;AAAA,MACzC;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,OAAO,MAAc,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAAG;AACjH,UAAM,KAAK,KAAK,OAAO,mBAAO,OAAO,IAAI,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACrE;AACD;;;ACpCA,IAAAC,eAAiE;AACjE,IAAAC,cAYO;AAEA,IAAM,kBAAN,MAAsB;AAAA,EACrB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAlBlD,OAiB6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU5B,MAAa,QAAQ,eAA0B,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC3G,WAAO,KAAK,KAAK,IAAI,mBAAO,KAAK,aAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,oBACZ,OACA,QAAyC,CAAC,GAC1C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,iBAAiB,KAAK,GAAG;AAAA,MACpD;AAAA,MACA;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,IACjC,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,mBACZ,OACA,gBACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,gBAAgB,OAAO,cAAc,GAAG;AAAA,MACnE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,gBACZ,eACA,QAAqC,CAAC,GACtC,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,aAAa,aAAa,GAAG;AAAA,MACxD;AAAA,MACA;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,IACjC,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,eACZ,eACA,eACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,mBAAO,YAAY,eAAe,aAAa,GAAG;AAAA,MACtE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,sBACZ,eACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,aAAa,aAAa,GAAG;AAAA,MACzD;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,sBACZ,eACA,eACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,mBAAO,YAAY,eAAe,aAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,mBACZ,eACA,eACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,KAAK,mBAAO,mBAAmB,eAAe,aAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC/F;AACD;;;AC9JA,IAAAC,eAAiE;AACjE,IAAAC,cAcO;AAEA,IAAM,YAAN,MAAgB;AAAA,EACf,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EApBlD,OAmBuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf,yBAAyB,SAAuC;AACtE,UAAM,MAAM,IAAI,IAAI,GAAG,uBAAW,GAAG,GAAG,mBAAO,oBAAoB,CAAC,EAAE;AACtE,QAAI,aAAS,kCAAoB,OAAO,EAAE,SAAS;AACnD,WAAO,IAAI,SAAS;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,cACZ,MACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,oBAAoB,GAAG;AAAA,MACnD,UAAM,kCAA6D,IAAI;AAAA,MACvE,iBAAiB;AAAA,MACjB,SAAS;AAAA,QACR,gBAAgB;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,aACZ,MACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,oBAAoB,GAAG;AAAA,MACnD,UAAM,kCAA8D,IAAI;AAAA,MACxE,iBAAiB;AAAA,MACjB,SAAS;AAAA,QACR,gBAAgB;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,SACZ,MACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,KAAK,mBAAO,oBAAoB,GAAG;AAAA,MACnD,UAAM,kCAAoB,IAAI;AAAA,MAC9B,iBAAiB;AAAA,MACjB,SAAS;AAAA,QACR,gBAAgB;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,oCAAoC,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC7G,WAAO,KAAK,KAAK,IAAI,mBAAO,yBAAyB,GAAG;AAAA,MACvD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,mCAAmC,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC5G,WAAO,KAAK,KAAK,IAAI,mBAAO,2BAA2B,GAAG;AAAA,MACzD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,YACZ,eACA,mBACA,MACA,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,KAAK,KAAK,KAAK,mBAAO,sBAAsB,GAAG;AAAA,MACpD,UAAM,kCAAoB,IAAI;AAAA,MAC9B,iBAAiB;AAAA,MACjB,SAAS;AAAA,QACR,eAAe,SAAS,KAAK,GAAG,aAAa,IAAI,iBAAiB,EAAE,CAAC;AAAA,QACrE,gBAAgB;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACxJA,IAAAC,eAAiE;AACjE,IAAAC,eAMO;AAEA,IAAM,UAAN,MAAc;AAAA,EACb,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAZlD,OAWqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAapB,MAAa,gBACZ,WACA,WACA,UACA,QAAyC,CAAC,GAC1C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,iBAAiB,WAAW,WAAW,QAAQ,GAAG;AAAA,MAC7E;AAAA,MACA;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,IACjC,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,WACZ,WACA,WACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,KAAK,oBAAO,WAAW,WAAW,SAAS,GAAG;AAAA,MAC9D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACrDA,IAAAC,eAMO;AAEA,IAAM,qBAAN,MAAyB;AAAA,EACxB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAZlD,OAWgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU/B,MAAa,mBACZ,eACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,kCAAkC,aAAa,GAAG;AAAA,MAC7E;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,sBACZ,eACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,kCAAkC,aAAa,GAAG;AAAA,MAC7E;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;AC/CA,IAAAC,eAAqE;AAE9D,IAAM,sBAAN,MAA0B;AAAA,EACzB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EANlD,OAKiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShC,MAAa,2BAA2B,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACpG,WAAO,KAAK,KAAK,IAAI,oBAAO,wBAAwB,GAAG;AAAA,MACtD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACjBA,IAAAC,eAQO;AAEA,IAAM,oBAAN,MAAwB;AAAA,EACvB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAdlD,OAa+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU9B,MAAa,OACZ,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,KAAK,oBAAO,eAAe,GAAG;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,IAAI,WAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACnG,WAAO,KAAK,KAAK,IAAI,oBAAO,cAAc,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,KACZ,WACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,cAAc,SAAS,GAAG;AAAA,MACvD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,OACZ,WACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,UAAM,KAAK,KAAK,OAAO,oBAAO,cAAc,SAAS,GAAG,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,EACjF;AACD;;;AC7EA,IAAAC,eAMO;AAEA,IAAM,cAAN,MAAkB;AAAA,EACjB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAZlD,OAWyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUxB,MAAa,eAAe,QAAmB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC3G,WAAO,KAAK,KAAK,IAAI,oBAAO,YAAY,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,YAAY,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACrF,WAAO,KAAK,KAAK,IAAI,oBAAO,aAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,IAAI,WAAsB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACnG,WAAO,KAAK,KAAK,IAAI,oBAAO,QAAQ,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACjE;AACD;;;AC3CA,IAAAC,eAAiE;AACjE,IAAAC,eAMO;AAEA,IAAM,aAAN,MAAiB;AAAA,EAChB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAZlD,OAWwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvB,MAAa,KAAK,UAAqB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACnG,UAAM,KAAK,KAAK,IAAI,oBAAO,cAAc,UAAU,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,UACZ,UACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,IAAI,oBAAO,cAAc,UAAU,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,MAAM,UAAqB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACpG,UAAM,KAAK,KAAK,OAAO,oBAAO,cAAc,UAAU,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,aACZ,UACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,UAAM,KAAK,KAAK,OAAO,oBAAO,cAAc,UAAU,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAChF;AAAA,EAkCA,MAAa,UACZ,UACA,QACA,QAA4C,CAAC,GAC7C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,cAAc,UAAU,MAAM,GAAG;AAAA,MAC5D;AAAA,MACA;AAAA,MACA,WAAO,kCAAoB,KAAK;AAAA,IACjC,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,cAAc,UAAqB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC5G,WAAO,KAAK,KAAK,IAAI,oBAAO,cAAc,QAAQ,GAAG;AAAA,MACpD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;AC5HA,IAAAC,gBAAiE;AACjE,IAAAC,eAiBO;AAEA,IAAM,WAAN,MAAe;AAAA,EACd,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAvBlD,OAsBsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUrB,MAAa,IAAI,QAAmB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAChG,WAAO,KAAK,KAAK,IAAI,oBAAO,KAAK,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,WAAW,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACpF,WAAO,KAAK,KAAK,IAAI,oBAAO,KAAK,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,UACZ,QAA0C,CAAC,GAC3C,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,WAAW,GAAG;AAAA,MACzC;AAAA,MACA,WAAO,mCAAoB,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,WAAW,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACxG,UAAM,KAAK,KAAK,OAAO,oBAAO,UAAU,OAAO,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,KACZ,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,OAAO,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,eAAe,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC5G,WAAO,KAAK,KAAK,IAAI,oBAAO,gBAAgB,OAAO,GAAG;AAAA,MACrD;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,uBACZ,SACA,OAA+C,CAAC,GAChD,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,YAAY,SAAS,KAAK,GAAG;AAAA,MAC1D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,SAAS,QAAmB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACrG,WAAO,KAAK,KAAK,KAAK,oBAAO,aAAa,GAAG;AAAA,MAC5C;AAAA,MACA,MAAM,EAAE,cAAc,OAAO;AAAA,MAC7B;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,eAAe,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACxF,WAAO,KAAK,KAAK,IAAI,oBAAO,gBAAgB,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,6BACZ,eACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,8BAA8B,aAAa,GAAG;AAAA,MACzE;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,gCACZ,eACA,MACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,8BAA8B,aAAa,GAAG;AAAA,MACzE;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACtLA,IAAAC,eAUO;AAEA,IAAM,WAAN,MAAe;AAAA,EACd,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAhBlD,OAesB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASrB,MAAa,gBAAgB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AACzF,WAAO,KAAK,KAAK,IAAI,oBAAO,aAAa,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,kBACZ,SACA,QACA,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,gBAAgB,SAAS,MAAM,GAAG;AAAA,MAC7D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,cAAc,SAAoB,EAAE,MAAM,OAAO,IAA0C,CAAC,GAAG;AAC3G,WAAO,KAAK,KAAK,IAAI,oBAAO,gBAAgB,SAAS,KAAK,GAAG;AAAA,MAC5D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,mBACZ,SACA,QACA,MACA,EAAE,MAAM,QAAQ,OAAO,IAAqD,CAAC,GAC5E;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,gBAAgB,SAAS,MAAM,GAAG;AAAA,MAC/D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,eACZ,SACA,OAAyD,CAAC,GAC1D,EAAE,MAAM,OAAO,IAA0C,CAAC,GACzD;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,gBAAgB,SAAS,KAAK,GAAG;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;AClGA,IAAAC,gBAA+E;AAC/E,IAAAC,eAgBO;AAUA,IAAM,cAAN,MAAkB;AAAA,EACjB,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EA9BlD,OA6ByB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWxB,MAAa,IACZ,IACA,EAAE,OAAO,OAAO,IAAkE,CAAC,GAClF;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,QAAQ,IAAI,KAAK,GAAG;AAAA,MAC/C;AAAA,MACA,MAAM,CAAC;AAAA,IACR,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,KACZ,IACA,MACA,EAAE,OAAO,QAAQ,OAAO,IAA6E,CAAC,GACrG;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,QAAQ,IAAI,KAAK,GAAG;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,CAAC;AAAA,IACR,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,OACZ,IACA,EAAE,OAAO,QAAQ,OAAO,IAA6E,CAAC,GACrG;AACD,UAAM,KAAK,KAAK,OAAO,oBAAO,QAAQ,IAAI,KAAK,GAAG;AAAA,MACjD;AAAA,MACA;AAAA,MACA,MAAM,CAAC;AAAA,IACR,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2CA,MAAa,QACZ,IACA,OACA,EAAE,MAAM,WAAW,iBAAiB,OAAO,GAAG,KAAK,GACnD,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,KAAK,oBAAO,QAAQ,IAAI,KAAK,GAAG;AAAA,MAChD,WAAO,mCAAoB,EAAE,MAAM,WAAW,gBAAgB,CAAC;AAAA,MAC/D;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,aACZ,IACA,OACA,MACA,QAA+C,CAAC,GAChD,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,KAAK,KAAK,KAAK,oBAAO,gBAAgB,IAAI,OAAO,OAAO,GAAG;AAAA,MAChE,WAAO,mCAAoB,KAAK;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,cACZ,IACA,OACA,MACA,QAAgD,CAAC,GACjD,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,KAAK,KAAK,KAAK,oBAAO,gBAAgB,IAAI,OAAO,QAAQ,GAAG;AAAA,MACjE,WAAO,mCAAoB,KAAK;AAAA,MAChC;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,WACZ,IACA,OACA,WACA,QAAgD,CAAC,GACjD,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,IAAI,oBAAO,eAAe,IAAI,OAAO,SAAS,GAAG;AAAA,MACjE,WAAO,mCAAoB,KAAK;AAAA,MAChC,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,YACZ,IACA,OACA,WACA,EAAE,WAAW,iBAAiB,OAAO,GAAG,KAAK,GAC7C,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,WAAO,KAAK,KAAK,MAAM,oBAAO,eAAe,IAAI,OAAO,SAAS,GAAG;AAAA,MACnE,WAAO,mCAAoB,EAAE,WAAW,gBAAgB,CAAC;AAAA,MACzD,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,cACZ,IACA,OACA,WACA,QAAmC,CAAC,GACpC,EAAE,OAAO,IAAiC,CAAC,GAC1C;AACD,UAAM,KAAK,KAAK,OAAO,oBAAO,eAAe,IAAI,OAAO,SAAS,GAAG;AAAA,MACnE,WAAO,mCAAoB,KAAK;AAAA,MAChC,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AACD;;;ACvOO,IAAM,MAAN,MAAU;AAAA,EAqCT,YAA4B,MAAY;AAAZ;AAClC,SAAK,sBAAsB,IAAI,uBAAuB,IAAI;AAC1D,SAAK,eAAe,IAAI,gBAAgB,IAAI;AAC5C,SAAK,WAAW,IAAI,YAAY,IAAI;AACpC,SAAK,UAAU,IAAI,WAAW,IAAI;AAClC,SAAK,SAAS,IAAI,UAAU,IAAI;AAChC,SAAK,UAAU,IAAI,WAAW,IAAI;AAClC,SAAK,eAAe,IAAI,gBAAgB,IAAI;AAC5C,SAAK,SAAS,IAAI,UAAU,IAAI;AAChC,SAAK,OAAO,IAAI,QAAQ,IAAI;AAC5B,SAAK,kBAAkB,IAAI,mBAAmB,IAAI;AAClD,SAAK,mBAAmB,IAAI,oBAAoB,IAAI;AACpD,SAAK,iBAAiB,IAAI,kBAAkB,IAAI;AAChD,SAAK,WAAW,IAAI,YAAY,IAAI;AACpC,SAAK,UAAU,IAAI,WAAW,IAAI;AAClC,SAAK,QAAQ,IAAI,SAAS,IAAI;AAC9B,SAAK,QAAQ,IAAI,SAAS,IAAI;AAC9B,SAAK,WAAW,IAAI,YAAY,IAAI;AACpC,SAAK,eAAe,IAAI,gBAAgB,MAAM,KAAK,QAAQ;AAAA,EAC5D;AAAA,EA/FD,OAuCiB;AAAA;AAAA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAsBjB;;;AC/FA,kBAAwD;AACxD,gBAAqC;AACrC,uBAAiC;AACjC,iCAAkC;AAClC,IAAAC,eAgFO;AAsHP,SAAS,YAAY,YAA6B,SAAiB;AAClE,SAAO,WAAW,MAAM,WAAW,MAAM,GAAG,OAAO;AACpD;AAFS;AAIF,IAAM,SAAN,cAAqB,6CAAgC;AAAA,EA/M5D,OA+M4D;AAAA;AAAA;AAAA,EAC3C;AAAA,EAEA;AAAA,EAEA;AAAA,EAET,YAAY,SAAwB;AAC1C,UAAM;AACN,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ;AACvB,SAAK,MAAM,IAAI,IAAI,KAAK,IAAI;AAE5B,SAAK,QAAQ,GAAG,+BAAqB,UAAU,CAAC,UAAU,YAAY;AACrE,WAAK,KAAK,SAAS,GAAG,KAAK,aAAa,SAAS,GAAG,OAAO,CAAC;AAAA,IAC7D,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,OAAc,4BAA4B,SAAyC,UAAU,KAAQ;AACpG,UAAM,cAAU,8BAAiB,QAAQ,UAAU,MAAM,KAAK,QAAQ,cAAc,CAAC;AACrF,UAAM,QAAQ,QAAQ,SAAS,kCAAiB,SAAS,EAAE,SAAS;AAEpE,UAAM,aAAa,IAAI,gBAAgB;AAEvC,QAAI,QAAoC,YAAY,YAAY,OAAO;AAEvE,UAAM,cAAc,wBAAC,EAAE,KAAK,MAAoD;AAE/E,UAAI,KAAK,KAAK,UAAU,OAAO;AAC9B,mBAAW,MAAM,IAAI,kCAAsB,MAAM,OAAO,CAAC;AAAA,MAC1D;AAAA,IACD,GALoB;AAOpB,UAAM,UAAU,6BAAM;AACrB,UAAI,OAAO;AACV,qBAAa,KAAK;AAAA,MACnB;AAEA,WAAK,IAAI,mCAAsB,aAAa,WAAW;AAAA,IACxD,GANgB;AAQhB,SAAK,GAAG,mCAAsB,aAAa,WAAW;AACtD,UAAM,KAAK,QAAQ,KAAK,SAAS;AAAA,MAChC,IAAI,4BAAe;AAAA;AAAA,MAEnB,GAAG;AAAA,QACF,GAAG;AAAA,QACH;AAAA,MACD;AAAA,IACD,CAAC;AAED,QAAI;AACH,YAAM,WAAW,6CAAkB,GAAG,MAAM,mCAAsB,mBAAmB;AAAA,QACpF,QAAQ,WAAW;AAAA,MACpB,CAAC;AAED,uBAAiB,CAAC,EAAE,KAAK,CAAC,KAAK,UAAU;AACxC,YAAI,KAAK,UAAU,MAAO;AAE1B,qBAAa,KAAK;AAClB,gBAAQ;AAER,cAAM;AAAA,UACL,SAAS,KAAK;AAAA,UACd;AAAA,UACA,UAAU,KAAK,aAAa;AAAA,UAC5B,WAAW,KAAK,aAAa;AAAA,UAC7B,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,QAClB;AAEA,YAAI,KAAK,eAAe,KAAK,cAAc,EAAG;AAG9C,gBAAQ,YAAY,YAAY,OAAO;AAAA,MACxC;AAAA,IACD,SAAS,OAAO;AACf,UAAI,iBAAiB,SAAS,MAAM,SAAS,cAAc;AAC1D,YAAI,MAAM,iBAAiB,mCAAuB;AACjD,gBAAM,MAAM;AAAA,QACb;AAEA,cAAM,IAAI,MAAM,mBAAmB;AAAA,MACpC;AAEA,YAAM;AAAA,IACP,UAAE;AACD,cAAQ;AAAA,IACT;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,oBAAoB,SAAyC,UAAU,KAAQ;AAC3F,UAAM,UAAgD,CAAC;AACvD,UAAM,WAAkD,CAAC;AACzD,UAAM,YAAoD,CAAC;AAC3D,UAAM,QAAQ,QAAQ,SAAS,kCAAiB,SAAS,EAAE,SAAS;AAEpE,qBAAiB,QAAQ,KAAK,4BAA4B,EAAE,GAAG,SAAS,MAAM,GAAG,OAAO,GAAG;AAC1F,cAAQ,KAAK,GAAG,KAAK,OAAO;AAC5B,UAAI,KAAK,UAAW,WAAU,KAAK,GAAG,KAAK,SAAS;AACpD,UAAI,KAAK,SAAU,UAAS,KAAK,GAAG,KAAK,QAAQ;AAAA,IAClD;AAEA,WAAO,EAAE,SAAS,OAAO,UAAU,UAAU;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAc,gCAAgC,SAA6C,UAAU,KAAQ;AAC5G,UAAM,aAAa,MAAM,KAAK,QAAQ,cAAc;AACpD,UAAM,WAAW,IAAI,QAAQ,QAAQ,WAAW,CAAC,gBAAY,8BAAiB,SAAS,UAAU,CAAC;AAElG,UAAM,aAAa,IAAI,gBAAgB;AAEvC,QAAI,QAAoC,YAAY,YAAY,OAAO;AAEvE,eAAW,CAAC,SAAS,QAAQ,KAAK,UAAU;AAC3C,YAAM,KAAK,QAAQ,KAAK,SAAS;AAAA,QAChC,IAAI,4BAAe;AAAA;AAAA,QAEnB,GAAG;AAAA,UACF,GAAG;AAAA,UACH,WAAW;AAAA,QACZ;AAAA,MACD,CAAC;AAAA,IACF;AAEA,QAAI;AACH,YAAM,WAAW,6CAAkB,GAAG,MAAM,mCAAsB,kBAAkB;AAAA,QACnF,QAAQ,WAAW;AAAA,MACpB,CAAC;AAED,YAAM,WAAW,IAAI,IAAI,QAAQ,SAAS;AAE1C,uBAAiB,CAAC,EAAE,KAAK,CAAC,KAAK,UAAU;AACxC,YAAI,CAAC,SAAS,IAAI,KAAK,QAAQ,EAAG;AAElC,qBAAa,KAAK;AAClB,gBAAQ;AAER,cAAM;AAAA,UACL,SAAS,KAAK;AAAA,UACd,kBAAkB,KAAK;AAAA,QACxB;AAEA,iBAAS,OAAO,KAAK,QAAQ;AAE7B,YAAI,SAAS,SAAS,EAAG;AAEzB,gBAAQ,YAAY,YAAY,OAAO;AAAA,MACxC;AAAA,IACD,SAAS,OAAO;AACf,UAAI,iBAAiB,SAAS,MAAM,SAAS,cAAc;AAC1D,cAAM,IAAI,MAAM,mBAAmB;AAAA,MACpC;AAEA,YAAM;AAAA,IACP,UAAE;AACD,UAAI,OAAO;AACV,qBAAa,KAAK;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAa,wBAAwB,SAA6C,UAAU,KAAQ;AACnG,UAAM,mBAAmB,oBAAI,IAG3B;AAEF,qBAAiB,QAAQ,KAAK,gCAAgC,SAAS,OAAO,GAAG;AAChF,uBAAiB,IAAI,KAAK,SAAS,KAAK,gBAAgB;AAAA,IACzD;AAEA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,iBAAiB,SAAsC;AACnE,UAAM,cAAU,8BAAiB,QAAQ,UAAU,MAAM,KAAK,QAAQ,cAAc,CAAC;AAErF,UAAM,KAAK,QAAQ,KAAK,SAAS;AAAA,MAChC,IAAI,4BAAe;AAAA;AAAA,MAEnB,GAAG;AAAA,IACJ,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,eAAe,SAAiB,SAAoC;AAChF,UAAM,KAAK,QAAQ,KAAK,SAAS;AAAA,MAChC,IAAI,4BAAe;AAAA;AAAA,MAEnB,GAAG;AAAA,IACJ,CAAC;AAAA,EACF;AAAA,EAEQ,aAAyB,KAAiB,SAA2C;AAC5F,WAAO;AAAA,MACN,KAAK,KAAK;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACP;AAAA,EACD;AACD;;;AC9cO,SAAS,UAAU,OAA6B,SAA6C;AACnG,QAAM,OAAO;AAAA,IACZ,GAAG;AAAA,IACH,aAAa,MAAM,IAAI,CAAC,MAAM,WAAW;AAAA,MACxC,IAAI,MAAM,SAAS;AAAA,MACnB,aAAa,KAAK;AAAA,IACnB,EAAE;AAAA,EACH;AAEA,QAAM,cAAc,MAAM,IAAI,CAAC,MAAM,WAAW;AAAA,IAC/C,MAAM,KAAK,QAAQ,MAAM,SAAS;AAAA,IAClC,MAAM,KAAK;AAAA,EACZ,EAAE;AAEF,SAAO,EAAE,MAAM,OAAO,YAAY;AACnC;AAfgB;;;ArBRhB,0BAAc,kCALd;AAOA,IAAAC,eAAsC;AAO/B,IAAM,UAAU;","names":["import_v10","import_rest","import_v10","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_rest","import_v10","import_v10","import_v10","import_v10","import_v10","import_rest","import_v10","import_rest","import_v10","import_v10","import_rest","import_v10","import_v10","import_util"]}