@seedcord/gateway 0.4.1 → 0.5.0

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.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import "reflect-metadata";
2
2
  import { WinstonConsoleSink, WinstonFileSink } from "@seedcord/logger/node";
3
3
  import { AutocompletableNames, AutocompleteRouteBrand, CacheFor, ChoiceValueOf, ComponentDefsBrand, ComponentKindBrand, ContextMenuKindBrand, ContextMenuLeaves, ContextMenuNamesBrand, EntryFor, FocusedField, GateFitsWith, HasComponentDefs, Initializeable, MatchArms, MenuCacheFor, NamesFor, PageCursor, SingleParams, SlashOptions as SlashOptions$1, SlashRouteBrand } from "@seedcord/core/internal";
4
- import { ArraySourceBase, AutocompleteOptions, BaseHandler as BaseHandler$1, BaseReplySender, Bus, CoreBase, CursorSourceBase, DispatchContext, Gate, GateContextBase, GateNoticeOptions, GuildPermissionsContext, ModalLike, Notice, PageSourceBase, PaginatorBase, PaginatorConfig, PermissionNoticeOverrides, PermissionScope, RepliableHandler as RepliableHandler$1, RequiredOf, ResolvedEmoji, SelectMenuKind, SlashRegistry, Subscriber as Subscriber$1, SubscriptionKey, WebhookLog as WebhookLog$1 } from "@seedcord/core";
4
+ import { ArraySourceBase, AutocompleteOptions, BaseHandler as BaseHandler$1, BaseReplySender, Bus, CoreBase, CursorSourceBase, DispatchContext, Gate, GateContextBase, GateNoticeOptions, GuildPermissionsContext, InteractionKind, ModalLike, Notice, PageSourceBase, PaginatorBase, PaginatorConfig, PermissionNoticeOverrides, PermissionScope, RepliableHandler as RepliableHandler$1, RequiredOf, ResolvedEmoji, SlashRegistry, Subscriber as Subscriber$1, SubscriptionKey, WebhookLog as WebhookLog$1 } from "@seedcord/core";
5
5
  import { Logger } from "@seedcord/logger";
6
6
  import { APIInteractionGuildMember, APIModalInteractionResponseCallbackData, AnySelectMenuInteraction, ApplicationCommandOptionChoiceData, ApplicationCommandType, ApplicationEmoji, AutocompleteInteraction, BaseMessageOptions, BooleanCache, ButtonInteraction, ButtonStyle, CacheType, CacheTypeReducer, ChannelSelectMenuInteraction, ChatInputCommandInteraction, Client, ClientEvents, ClientOptions, CommandInteractionOption, ContextMenuCommandInteraction, Events, Guild, GuildEmoji, GuildMember, Interaction, MentionableSelectMenuInteraction, Message, MessageContextMenuCommandInteraction, ModalSubmitFields, ModalSubmitInteraction, Role, RoleSelectMenuInteraction, StringSelectMenuInteraction, TextChannel, User, UserContextMenuCommandInteraction, UserSelectMenuInteraction } from "discord.js";
7
7
  import { Plugin as Plugin$1, PluginLifecycleSpec, PluginOptions, PluginOptions as PluginOptions$1 } from "@seedcord/core/plugin";
@@ -127,17 +127,7 @@ declare class InteractionDispatcher implements Initializeable, HmrAware {
127
127
  protected core: Core;
128
128
  private readonly logger;
129
129
  private isInitialized;
130
- private readonly slashMap;
131
- private readonly buttonMap;
132
- private readonly modalMap;
133
- private readonly stringSelectMap;
134
- private readonly userSelectMap;
135
- private readonly roleSelectMap;
136
- private readonly channelSelectMap;
137
- private readonly mentionableSelectMap;
138
- private readonly messageContextMenuMap;
139
- private readonly userContextMenuMap;
140
- private readonly autocompleteMap;
130
+ private readonly maps;
141
131
  private readonly handlerFiles;
142
132
  private readonly keysToIgnore;
143
133
  private readonly middlewares;
@@ -147,7 +137,6 @@ declare class InteractionDispatcher implements Initializeable, HmrAware {
147
137
  private readonly loadedHandlers;
148
138
  private readonly loadedMiddlewares;
149
139
  private readonly hmrHandler?;
150
- private readonly routeTypes;
151
140
  constructor(core: Core);
152
141
  warnUnhandledRoutes(commandLeaves: Iterable<string>): void;
153
142
  warnUnhandledContextMenuRoutes(leaves: ContextMenuLeaves): void;
@@ -618,8 +607,8 @@ declare class ReplySender extends BaseReplySender<SentMessage, GatewayFile> {
618
607
  * Shared base the repliable interaction handlers extend.
619
608
  *
620
609
  * Not a public entry point. Extend {@link SlashHandler}, {@link ButtonHandler}, {@link ModalHandler},
621
- * {@link SelectMenuHandler}, or {@link ContextMenuHandler} instead. This class binds the core reply base
622
- * to the gateway sender.
610
+ * {@link ContextMenuHandler}, or one of the select menu bases instead. This class binds the core
611
+ * reply base to the gateway sender.
623
612
  *
624
613
  * @typeParam Event - The repliable interaction type this handler processes
625
614
  */
@@ -634,8 +623,8 @@ declare abstract class RepliableHandler<Event extends Repliables> extends Replia
634
623
  * Shared base the typed interaction handlers extend.
635
624
  *
636
625
  * Not a public entry point. Extend {@link SlashHandler}, {@link ButtonHandler}, {@link ModalHandler},
637
- * or {@link SelectMenuHandler} instead. This class adds `showModal` on top of the reply members those bases
638
- * share.
626
+ * or one of the select menu bases instead. This class adds `showModal` on top of the reply members
627
+ * those bases share.
639
628
  *
640
629
  * @typeParam Repliable - The interaction type this handler processes
641
630
  */
@@ -745,7 +734,7 @@ interface Ungateable {
745
734
  readonly [UngateableBrand]: true;
746
735
  }
747
736
  type ProvidedContext<TCtor extends AnyHandlerCtor> = InstanceType<TCtor> extends InteractionHandler<infer Repliable> ? InteractionGateContext<Repliable> : InstanceType<TCtor> extends EventHandler<infer Names> ? EventGateContext<Names> : Ungateable;
748
- type KindName<Ctx> = Ctx extends Ungateable ? 'autocomplete' : Ctx extends InteractionGateContext<infer R> ? R extends ChatInputCommandInteraction ? 'Slash' : R extends MessageContextMenuCommandInteraction ? 'MessageMenu' : R extends UserContextMenuCommandInteraction ? 'UserMenu' : R extends StringSelectMenuInteraction ? 'StringSelect' : R extends UserSelectMenuInteraction ? 'UserSelect' : R extends RoleSelectMenuInteraction ? 'RoleSelect' : R extends ChannelSelectMenuInteraction ? 'ChannelSelect' : R extends MentionableSelectMenuInteraction ? 'MentionableSelect' : R extends ButtonInteraction ? 'Button' : R extends ModalSubmitInteraction ? 'Modal' : 'an interaction' : Ctx extends EventGateContext<infer N> ? `${N & string} event` : 'an agnostic';
737
+ type KindName<Ctx> = Ctx extends Ungateable ? 'autocomplete' : Ctx extends InteractionGateContext<infer R> ? R extends ChatInputCommandInteraction ? 'Slash' : R extends MessageContextMenuCommandInteraction ? 'MessageContextMenu' : R extends UserContextMenuCommandInteraction ? 'UserContextMenu' : R extends StringSelectMenuInteraction ? 'StringMenu' : R extends UserSelectMenuInteraction ? 'UserMenu' : R extends RoleSelectMenuInteraction ? 'RoleMenu' : R extends ChannelSelectMenuInteraction ? 'ChannelMenu' : R extends MentionableSelectMenuInteraction ? 'MentionableMenu' : R extends ButtonInteraction ? 'Button' : R extends ModalSubmitInteraction ? 'Modal' : 'an interaction' : Ctx extends EventGateContext<infer N> ? `${N & string} event` : 'an agnostic';
749
738
  type FitAll<TCtor extends AnyHandlerCtor, Gates extends readonly Gate<GateContextBase>[]> = { [Index in keyof Gates]: GateFitsWith<ProvidedContext<TCtor>, KindName<ProvidedContext<TCtor>>, Gates[Index], KindName<RequiredOf<Gates[Index]>>>; };
750
739
  //#endregion
751
740
  //#region src/bot/decorators/Gated.d.ts
@@ -1073,8 +1062,8 @@ type ComponentInteraction = ButtonInteraction | ModalSubmitInteraction | AnySele
1073
1062
  /**
1074
1063
  * Shared base the customId-routed component handlers extend.
1075
1064
  *
1076
- * Not a public entry point. Extend {@link ButtonHandler}, {@link SelectMenuHandler}, or {@link ModalHandler}
1077
- * instead. This class defines the customId decode and the route matching those bases share.
1065
+ * Not a public entry point. Extend {@link ButtonHandler}, {@link ModalHandler}, or one of the select menu
1066
+ * bases instead. This class defines the customId decode and the route matching those bases share.
1078
1067
  *
1079
1068
  * @typeParam Event - The component interaction type this handler processes
1080
1069
  * @typeParam Defs - The customId route definitions registered on the concrete handler
@@ -1151,7 +1140,7 @@ declare abstract class ComponentHandler<Event extends ComponentInteraction, Defs
1151
1140
  */
1152
1141
  declare abstract class ButtonHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends ComponentHandler<ButtonInteraction<Cache>, Defs> {
1153
1142
  /** @internal */
1154
- readonly [ComponentKindBrand]?: 'button';
1143
+ readonly [ComponentKindBrand]?: InteractionKind.Button;
1155
1144
  }
1156
1145
  //#endregion
1157
1146
  //#region src/handlers/interaction/components/ModalHandler.d.ts
@@ -1180,7 +1169,7 @@ declare abstract class ButtonHandler<Defs extends readonly AnyCustomId[], Cache
1180
1169
  */
1181
1170
  declare abstract class ModalHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends ComponentHandler<ModalSubmitInteraction<Cache>, Defs> {
1182
1171
  /** @internal */
1183
- readonly [ComponentKindBrand]?: 'modal';
1172
+ readonly [ComponentKindBrand]?: InteractionKind.Modal;
1184
1173
  /** The fields this modal submitted, read by custom id. */
1185
1174
  protected get fields(): ModalSubmitFields<Cache>;
1186
1175
  /** Rewrite the message this modal was opened from. Throws when a command opened the modal. */
@@ -1191,27 +1180,58 @@ declare abstract class ModalHandler<Defs extends readonly AnyCustomId[], Cache e
1191
1180
  }
1192
1181
  //#endregion
1193
1182
  //#region src/handlers/interaction/components/SelectMenuHandler.d.ts
1194
- type SelectKey = 'values' | 'users' | 'members' | 'roles' | 'channels';
1195
- type EventMember<Kind extends SelectMenuKind, Cache extends CacheType, Key extends SelectKey> = Key extends keyof SelectMenuInteractionFor<Kind, Cache> ? SelectMenuInteractionFor<Kind, Cache>[Key] : never;
1196
- type SelectMenuInteractionFor<SelectMenu extends SelectMenuKind, Cache extends CacheType = CacheType> = SelectMenu extends SelectMenuKind.String ? StringSelectMenuInteraction<Cache> : SelectMenu extends SelectMenuKind.User ? UserSelectMenuInteraction<Cache> : SelectMenu extends SelectMenuKind.Role ? RoleSelectMenuInteraction<Cache> : SelectMenu extends SelectMenuKind.Channel ? ChannelSelectMenuInteraction<Cache> : SelectMenu extends SelectMenuKind.Mentionable ? MentionableSelectMenuInteraction<Cache> : never;
1197
1183
  /**
1198
- * Base class for a select menu handler.
1184
+ * Shared base the select menu handlers extend.
1199
1185
  *
1200
- * Pass the select kind first and the customId definitions second, the same order as `@SelectMenuRoute`.
1201
- * Read the picked ids from `this.values`. The kind decides which of `this.users`, `this.members`,
1202
- * `this.roles`, and `this.channels` this handler carries. The rest are `never`.
1186
+ * Not a public entry point. Extend {@link StringMenuHandler}, {@link UserMenuHandler},
1187
+ * {@link RoleMenuHandler}, {@link ChannelMenuHandler}, or {@link MentionableMenuHandler} instead. This
1188
+ * class defines the `values` getter those bases share.
1203
1189
  *
1204
- * Read `this.params` for a single route or `this.match` for several. Reply through the handler members, or
1205
- * rewrite the source message with `this.update`.
1190
+ * @typeParam Event - The select menu interaction type this handler processes
1191
+ * @typeParam Defs - The customId route definitions registered on the concrete handler
1192
+ */
1193
+ declare abstract class SelectMenuHandler<Event extends AnySelectMenuInteraction, Defs extends readonly AnyCustomId[]> extends ComponentHandler<Event, Defs> {
1194
+ /** The values this select picked. On every kind but the string menu they are snowflake ids. */
1195
+ protected get values(): string[];
1196
+ }
1197
+ /**
1198
+ * Base class for a string select menu handler.
1199
+ *
1200
+ * Register the customId definitions with `@StringMenuRoute`, list the same ones in the generic, then read
1201
+ * the chosen option values from `this.values`. Read `this.params` for a single route or `this.match` for
1202
+ * several. Reply through the handler members, or rewrite the source message with `this.update`.
1203
+ *
1204
+ * @typeParam Defs - The customId definitions this handler decodes, e.g. `[typeof TopicsId]`.
1205
+ * @typeParam Cache - The interaction cache state, `'cached'` by default.
1206
+ *
1207
+ * @example
1208
+ * ```ts
1209
+ * \@StringMenuRoute(TopicsId)
1210
+ * class Topics extends StringMenuHandler<[typeof TopicsId]> {
1211
+ * async execute() {
1212
+ * const { userId } = this.params;
1213
+ * await this.update(`<@${userId}> now follows ${this.values.join(', ')}`);
1214
+ * }
1215
+ * }
1216
+ * ```
1217
+ */
1218
+ declare abstract class StringMenuHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends SelectMenuHandler<StringSelectMenuInteraction<Cache>, Defs> {
1219
+ /** @internal */
1220
+ readonly [ComponentKindBrand]?: InteractionKind.StringMenu;
1221
+ }
1222
+ /**
1223
+ * Base class for a user select menu handler.
1224
+ *
1225
+ * Beside `this.values` this handler declares `this.users` and `this.members`. Register the customId
1226
+ * definitions with `@UserMenuRoute` and list the same ones in the generic.
1206
1227
  *
1207
- * @typeParam Kind - The select kind from {@link SelectMenuKind}, e.g. `SelectMenuKind.User`.
1208
1228
  * @typeParam Defs - The customId definitions this handler decodes, e.g. `[typeof AssignId]`.
1209
1229
  * @typeParam Cache - The interaction cache state, `'cached'` by default.
1210
1230
  *
1211
1231
  * @example
1212
1232
  * ```ts
1213
- * \@SelectMenuRoute(SelectMenuKind.User, AssignId)
1214
- * class AssignSelect extends SelectMenuHandler<SelectMenuKind.User, [typeof AssignId]> {
1233
+ * \@UserMenuRoute(AssignId)
1234
+ * class Assign extends UserMenuHandler<[typeof AssignId]> {
1215
1235
  * async execute() {
1216
1236
  * const { roleId } = this.params;
1217
1237
  * await this.reply(`assigning ${this.users.size} member(s) to <@&${roleId}>`);
@@ -1219,20 +1239,92 @@ type SelectMenuInteractionFor<SelectMenu extends SelectMenuKind, Cache extends C
1219
1239
  * }
1220
1240
  * ```
1221
1241
  */
1222
- declare abstract class SelectMenuHandler<Kind extends SelectMenuKind, Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends ComponentHandler<SelectMenuInteractionFor<Kind, Cache>, Defs> {
1242
+ declare abstract class UserMenuHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends SelectMenuHandler<UserSelectMenuInteraction<Cache>, Defs> {
1223
1243
  /** @internal */
1224
- readonly [ComponentKindBrand]?: Kind;
1225
- private eventMember;
1226
- /** The ids this select picked. */
1227
- protected get values(): string[];
1244
+ readonly [ComponentKindBrand]?: InteractionKind.UserMenu;
1228
1245
  /** The users this select picked. */
1229
- protected get users(): EventMember<Kind, Cache, 'users'>;
1246
+ protected get users(): UserSelectMenuInteraction<Cache>['users'];
1230
1247
  /** The guild members behind the picked users. Discord resolves these only inside a guild. */
1231
- protected get members(): EventMember<Kind, Cache, 'members'>;
1248
+ protected get members(): UserSelectMenuInteraction<Cache>['members'];
1249
+ }
1250
+ /**
1251
+ * Base class for a role select menu handler.
1252
+ *
1253
+ * Beside `this.values` this handler declares `this.roles`. Register the customId definitions with
1254
+ * `@RoleMenuRoute` and list the same ones in the generic.
1255
+ *
1256
+ * @typeParam Defs - The customId definitions this handler decodes, e.g. `[typeof GrantId]`.
1257
+ * @typeParam Cache - The interaction cache state, `'cached'` by default.
1258
+ *
1259
+ * @example
1260
+ * ```ts
1261
+ * \@RoleMenuRoute(GrantId)
1262
+ * class Grant extends RoleMenuHandler<[typeof GrantId]> {
1263
+ * async execute() {
1264
+ * await this.update(`granting ${this.roles.size} role(s)`);
1265
+ * }
1266
+ * }
1267
+ * ```
1268
+ */
1269
+ declare abstract class RoleMenuHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends SelectMenuHandler<RoleSelectMenuInteraction<Cache>, Defs> {
1270
+ /** @internal */
1271
+ readonly [ComponentKindBrand]?: InteractionKind.RoleMenu;
1232
1272
  /** The roles this select picked. */
1233
- protected get roles(): EventMember<Kind, Cache, 'roles'>;
1273
+ protected get roles(): RoleSelectMenuInteraction<Cache>['roles'];
1274
+ }
1275
+ /**
1276
+ * Base class for a channel select menu handler.
1277
+ *
1278
+ * Beside `this.values` this handler declares `this.channels`. Register the customId definitions with
1279
+ * `@ChannelMenuRoute` and list the same ones in the generic.
1280
+ *
1281
+ * @typeParam Defs - The customId definitions this handler decodes, e.g. `[typeof LogTargetId]`.
1282
+ * @typeParam Cache - The interaction cache state, `'cached'` by default.
1283
+ *
1284
+ * @example
1285
+ * ```ts
1286
+ * \@ChannelMenuRoute(LogTargetId)
1287
+ * class LogTarget extends ChannelMenuHandler<[typeof LogTargetId]> {
1288
+ * async execute() {
1289
+ * await this.update(`logging to ${this.channels.size} channel(s)`);
1290
+ * }
1291
+ * }
1292
+ * ```
1293
+ */
1294
+ declare abstract class ChannelMenuHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends SelectMenuHandler<ChannelSelectMenuInteraction<Cache>, Defs> {
1295
+ /** @internal */
1296
+ readonly [ComponentKindBrand]?: InteractionKind.ChannelMenu;
1234
1297
  /** The channels this select picked. */
1235
- protected get channels(): EventMember<Kind, Cache, 'channels'>;
1298
+ protected get channels(): ChannelSelectMenuInteraction<Cache>['channels'];
1299
+ }
1300
+ /**
1301
+ * Base class for a mentionable select menu handler.
1302
+ *
1303
+ * A mentionable menu accepts users and roles together. `this.users`, `this.members`, and `this.roles`
1304
+ * can each come back empty.
1305
+ *
1306
+ * @typeParam Defs - The customId definitions this handler decodes, e.g. `[typeof InviteId]`.
1307
+ * @typeParam Cache - The interaction cache state, `'cached'` by default.
1308
+ *
1309
+ * @example
1310
+ * ```ts
1311
+ * \@MentionableMenuRoute(InviteId)
1312
+ * class Invite extends MentionableMenuHandler<[typeof InviteId]> {
1313
+ * async execute() {
1314
+ * await this.update(`inviting ${this.users.size} user(s) and ${this.roles.size} role(s)`);
1315
+ * }
1316
+ * }
1317
+ * ```
1318
+ */
1319
+ declare abstract class MentionableMenuHandler<Defs extends readonly AnyCustomId[], Cache extends CacheType = 'cached'> extends SelectMenuHandler<MentionableSelectMenuInteraction<Cache>, Defs> {
1320
+ /** @internal */
1321
+ readonly [ComponentKindBrand]?: InteractionKind.MentionableMenu;
1322
+ /** The users this select picked. */
1323
+ protected get users(): MentionableSelectMenuInteraction<Cache>['users'];
1324
+ /** The guild members behind the picked users. Discord resolves these only inside a guild. */
1325
+ protected get members(): MentionableSelectMenuInteraction<Cache>['members'];
1326
+ /** The roles this select picked. */
1327
+ protected get roles(): MentionableSelectMenuInteraction<Cache>['roles'];
1236
1328
  }
1237
1329
  //#endregion
1238
1330
  //#region src/bot/decorators/Middlewares.d.ts
@@ -1764,5 +1856,5 @@ declare class Seedcord extends Pluggable<'gateway', 'server'> implements Core, S
1764
1856
  /** Package version */
1765
1857
  declare const version: string;
1766
1858
  //#endregion
1767
- export { ArraySource, AssignRoleNoticeOverrides, AutocompleteHandler, BaseHandler, ButtonHandler, type CheckPermissionOptions, ComponentHandler, type ConfirmOptions, type Core, CursorSource, type DefaultConfirmOptions, Emojis, type EventGateContext, EventHandler, EventMiddleware, type EventSpec, type EventsConfig, type GateContext, Gated, type GatewayBotConfig, type GatewayConfig, GatewayEmoji, type GatewayFile, type GatewayPluginOptions, type GatewayReplyResponse, HasPermsToAssignOptions, IgnoreBots, type InjectedEmojiMap, type InteractionGateContext, InteractionHandler, InteractionMiddleware, MessageContextMenuHandler, Middleware, type MiddlewareOptions, MiddlewareType, ModalHandler, Nsfw, type PageContext, type PageSource, Paginator, Plugin, type PluginLifecycleSpec, type PluginOptions, RegisterEvent, type RegisterEventOptions, RepliableHandler, type Repliables, ReplySender, Seedcord, SelectMenuHandler, type SentMessage, SlashHandler, type SlashOptions, Subscriber, UserContextMenuHandler, type ValidEventTypes, type ValidInteractionTypes, type ValidNonInteractionKeys, WebhookLog, WinstonConsoleSink, WinstonFileSink, checkBotPermissions, checkPermissions, getConfirmation, hasPermsToAssign, version };
1859
+ export { ArraySource, AssignRoleNoticeOverrides, AutocompleteHandler, BaseHandler, ButtonHandler, ChannelMenuHandler, type CheckPermissionOptions, ComponentHandler, type ConfirmOptions, type Core, CursorSource, type DefaultConfirmOptions, Emojis, type EventGateContext, EventHandler, EventMiddleware, type EventSpec, type EventsConfig, type GateContext, Gated, type GatewayBotConfig, type GatewayConfig, GatewayEmoji, type GatewayFile, type GatewayPluginOptions, type GatewayReplyResponse, HasPermsToAssignOptions, IgnoreBots, type InjectedEmojiMap, type InteractionGateContext, InteractionHandler, InteractionMiddleware, MentionableMenuHandler, MessageContextMenuHandler, Middleware, type MiddlewareOptions, MiddlewareType, ModalHandler, Nsfw, type PageContext, type PageSource, Paginator, Plugin, type PluginLifecycleSpec, type PluginOptions, RegisterEvent, type RegisterEventOptions, RepliableHandler, type Repliables, ReplySender, RoleMenuHandler, Seedcord, SelectMenuHandler, type SentMessage, SlashHandler, type SlashOptions, StringMenuHandler, Subscriber, UserContextMenuHandler, UserMenuHandler, type ValidEventTypes, type ValidInteractionTypes, type ValidNonInteractionKeys, WebhookLog, WinstonConsoleSink, WinstonFileSink, checkBotPermissions, checkPermissions, getConfirmation, hasPermsToAssign, version };
1768
1860
  //# sourceMappingURL=index.d.mts.map