xernerx 4.17.6 → 4.17.9

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.
Files changed (68) hide show
  1. package/dist/build/XernerxContextCommand.d.ts +47 -75
  2. package/dist/build/XernerxContextCommand.js +115 -119
  3. package/dist/build/XernerxEvent.d.ts +10 -10
  4. package/dist/build/XernerxEvent.js +17 -17
  5. package/dist/build/XernerxInhibitor.d.ts +15 -39
  6. package/dist/build/XernerxInhibitor.js +18 -18
  7. package/dist/build/XernerxMessageCommand.d.ts +52 -78
  8. package/dist/build/XernerxMessageCommand.js +114 -118
  9. package/dist/build/XernerxSlashCommand.d.ts +63 -97
  10. package/dist/build/XernerxSlashCommand.js +173 -177
  11. package/dist/client/XernerxClient.d.ts +55 -61
  12. package/dist/client/XernerxClient.js +94 -91
  13. package/dist/client/XernerxShardClient.d.ts +14 -14
  14. package/dist/client/XernerxShardClient.js +48 -61
  15. package/dist/functions/deploy.js +52 -45
  16. package/dist/functions/load.js +29 -28
  17. package/dist/functions/reload.js +24 -23
  18. package/dist/functions/setPresence.d.ts +1 -1
  19. package/dist/functions/setPresence.js +16 -17
  20. package/dist/handlers/CommandHandler.d.ts +10 -10
  21. package/dist/handlers/CommandHandler.js +337 -312
  22. package/dist/handlers/EventHandler.d.ts +5 -3
  23. package/dist/handlers/EventHandler.js +76 -48
  24. package/dist/handlers/ExtensionHandler.d.ts +3 -3
  25. package/dist/handlers/ExtensionHandler.js +23 -23
  26. package/dist/handlers/Handler.d.ts +17 -22
  27. package/dist/handlers/Handler.js +57 -45
  28. package/dist/handlers/InhibitorHandler.d.ts +3 -3
  29. package/dist/handlers/InhibitorHandler.js +23 -25
  30. package/dist/handlers/IntegrationHandler.d.ts +6 -6
  31. package/dist/handlers/IntegrationHandler.js +20 -20
  32. package/dist/main.d.ts +22 -29
  33. package/dist/main.js +22 -29
  34. package/dist/models/Arguments.d.ts +1 -4
  35. package/dist/models/Arguments.js +149 -134
  36. package/dist/models/Cooldowns.d.ts +6 -6
  37. package/dist/models/Cooldowns.js +29 -25
  38. package/dist/models/XernerxEntitlement.d.ts +45 -0
  39. package/dist/models/XernerxEntitlement.js +57 -0
  40. package/dist/models/XernerxUser.d.ts +14 -0
  41. package/dist/models/XernerxUser.js +13 -0
  42. package/dist/tools/XernerxError.d.ts +4 -4
  43. package/dist/tools/XernerxError.js +8 -8
  44. package/dist/tools/XernerxIntents.d.ts +2 -2
  45. package/dist/tools/XernerxIntents.js +21 -21
  46. package/dist/tools/XernerxLog.d.ts +25 -25
  47. package/dist/tools/XernerxLog.js +131 -140
  48. package/dist/tools/XernerxText.d.ts +23 -23
  49. package/dist/tools/XernerxText.js +89 -79
  50. package/dist/types/extenders.d.ts +47 -55
  51. package/dist/types/interfaces.d.ts +190 -195
  52. package/dist/types/types.d.ts +5 -104
  53. package/dist/utils/ClientUtil.d.ts +10 -12
  54. package/dist/utils/ClientUtil.js +117 -96
  55. package/dist/utils/InteractionUtil.d.ts +13 -13
  56. package/dist/utils/InteractionUtil.js +147 -148
  57. package/dist/utils/MessageUtil.d.ts +14 -14
  58. package/dist/utils/MessageUtil.js +161 -162
  59. package/dist/utils/Util.d.ts +7 -7
  60. package/dist/utils/Util.js +7 -7
  61. package/dist/validators/commandValidation.d.ts +1 -4
  62. package/dist/validators/commandValidation.js +114 -157
  63. package/dist/validators/inhibitorValidations.d.ts +2 -21
  64. package/dist/validators/inhibitorValidations.js +39 -39
  65. package/package.json +6 -5
  66. package/tsup.config.ts +19 -0
  67. package/dist/functions/xernerxUser.d.ts +0 -4
  68. package/dist/functions/xernerxUser.js +0 -10
@@ -1,111 +1,12 @@
1
1
  /** @format */
2
- import {
3
- SlashCommandBooleanOption,
4
- SlashCommandChannelOption,
5
- SlashCommandIntegerOption,
6
- SlashCommandMentionableOption,
7
- SlashCommandNumberOption,
8
- SlashCommandRoleOption,
9
- SlashCommandStringOption,
10
- SlashCommandUserOption,
11
- } from 'discord.js';
2
+ import { SlashCommandBooleanOption, SlashCommandChannelOption, SlashCommandIntegerOption, SlashCommandMentionableOption, SlashCommandNumberOption, SlashCommandRoleOption, SlashCommandStringOption, SlashCommandUserOption } from 'discord.js';
12
3
  import { XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from './extenders.js';
13
4
  export type filetype = 'MessageCommand' | 'SlashCommand' | 'ContextCommand' | 'Event' | 'Inhibitor';
14
- export type Locales =
15
- | 'en-US'
16
- | 'en-GB'
17
- | 'bg'
18
- | 'zh-CN'
19
- | 'zh-TW'
20
- | 'hr'
21
- | 'cs'
22
- | 'da'
23
- | 'nl'
24
- | 'fi'
25
- | 'fr'
26
- | 'de'
27
- | 'el'
28
- | 'hi'
29
- | 'hu'
30
- | 'it'
31
- | 'ja'
32
- | 'ko'
33
- | 'lt'
34
- | 'no'
35
- | 'pl'
36
- | 'pt-BR'
37
- | 'ro'
38
- | 'ru'
39
- | 'es-ES'
40
- | 'sv-SE'
41
- | 'th'
42
- | 'tr'
43
- | 'uk'
44
- | 'vi';
5
+ export type Locales = 'en-US' | 'en-GB' | 'bg' | 'zh-CN' | 'zh-TW' | 'hr' | 'cs' | 'da' | 'nl' | 'fi' | 'fr' | 'de' | 'el' | 'hi' | 'hu' | 'it' | 'ja' | 'ko' | 'lt' | 'no' | 'pl' | 'pt-BR' | 'ro' | 'ru' | 'es-ES' | 'sv-SE' | 'th' | 'tr' | 'uk' | 'vi';
45
6
  export type SlashCommandArgumentType = 'attachment' | 'boolean' | 'channel' | 'integer' | 'mentionable' | 'number' | 'role' | 'string' | 'user';
46
7
  export type SlashCommandOptionChoices = SlashCommandStringOption | SlashCommandNumberOption | SlashCommandIntegerOption;
47
8
  export type SlashCommandOption = SlashCommandOptionChoices | SlashCommandBooleanOption | SlashCommandUserOption | SlashCommandChannelOption | SlashCommandRoleOption | SlashCommandMentionableOption;
48
- export type MessageCommandArgumentType =
49
- | 'string'
50
- | 'number'
51
- | 'boolean'
52
- | 'confirm'
53
- | 'channel'
54
- | 'guild'
55
- | 'integer'
56
- | 'mentionable'
57
- | 'role'
58
- | 'user'
59
- | 'message'
60
- | 'member'
61
- | 'list'
62
- | 'option'
63
- | 'rest';
64
- export type XernerxInteraction<T extends XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction> = T extends XernerxSlashInteraction
65
- ? XernerxSlashInteraction
66
- : T extends XernerxUserContextInteraction
67
- ? XernerxUserContextInteraction
68
- : XernerxMessageContextInteraction;
69
- export type PermissionNames =
70
- | 'create instant invite'
71
- | 'kick members'
72
- | 'ban members'
73
- | 'administrator'
74
- | 'manage channels'
75
- | 'manage guild'
76
- | 'add reactions'
77
- | 'view audit log'
78
- | 'priority speaker'
79
- | 'stream'
80
- | 'view channel'
81
- | 'send messages'
82
- | 'send tts messages'
83
- | 'manage messages'
84
- | 'embed links'
85
- | 'attach files'
86
- | 'read message history'
87
- | 'mention everyone'
88
- | 'use external emojis'
89
- | 'view guild insights'
90
- | 'connect'
91
- | 'speak'
92
- | 'mute members'
93
- | 'deafen members'
94
- | 'move members'
95
- | 'use vad'
96
- | 'change nickname'
97
- | 'manage nicknames'
98
- | 'manage roles'
99
- | 'manage webhooks'
100
- | 'manage emojis and stickers'
101
- | 'use application commands'
102
- | 'request to speak'
103
- | 'manage events'
104
- | 'manage threads'
105
- | 'create public threads'
106
- | 'create private threads'
107
- | 'use external stickers'
108
- | 'send messages in threads'
109
- | 'start embedded activities'
110
- | 'moderate members';
9
+ export type MessageCommandArgumentType = 'string' | 'number' | 'boolean' | 'confirm' | 'channel' | 'guild' | 'integer' | 'mentionable' | 'role' | 'user' | 'message' | 'member' | 'list' | 'option' | 'rest';
10
+ export type XernerxInteraction<T extends XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction> = T extends XernerxSlashInteraction ? XernerxSlashInteraction : T extends XernerxUserContextInteraction ? XernerxUserContextInteraction : XernerxMessageContextInteraction;
11
+ export type PermissionNames = 'create instant invite' | 'kick members' | 'ban members' | 'administrator' | 'manage channels' | 'manage guild' | 'add reactions' | 'view audit log' | 'priority speaker' | 'stream' | 'view channel' | 'send messages' | 'send tts messages' | 'manage messages' | 'embed links' | 'attach files' | 'read message history' | 'mention everyone' | 'use external emojis' | 'view guild insights' | 'connect' | 'speak' | 'mute members' | 'deafen members' | 'move members' | 'use vad' | 'change nickname' | 'manage nicknames' | 'manage roles' | 'manage webhooks' | 'manage emojis and stickers' | 'use application commands' | 'request to speak' | 'manage events' | 'manage threads' | 'create public threads' | 'create private threads' | 'use external stickers' | 'send messages in threads' | 'start embedded activities' | 'moderate members';
111
12
  export type InhibitorType = '*' | 'message' | 'interaction' | 'command' | 'channel' | 'user' | 'member' | 'guild' | 'contextCommand' | 'messageCommand' | 'slashCommand';
@@ -7,16 +7,14 @@ import XernerxContextCommand from '../build/XernerxContextCommand.js';
7
7
  import XernerxMessageCommand from '../build/XernerxMessageCommand.js';
8
8
  import XernerxSlashCommand from '../build/XernerxSlashCommand.js';
9
9
  export default class ClientUtil extends Util {
10
- hasVoted: Function;
11
- constructor(client: XernerxClient);
12
- setPresence(options: PresenceOptions): import('discord.js').ClientPresence | undefined;
13
- private resolveCooldown;
14
- resolveCommand(
15
- options: ResolveCommandOptions
16
- ): Promise<XernerxSlashCommand | XernerxContextCommand | XernerxMessageCommand | Collection<string, XernerxSlashCommand | XernerxContextCommand | XernerxMessageCommand>>;
17
- resolveChannel(query: string | Record<string, string>): Promise<import('discord.js').Channel | null>;
18
- resolveGuild(query: string | Record<string, string>): Promise<import('discord.js').Guild | null>;
19
- uptime(timestamp?: number | null): string;
20
- commands(): (XernerxSlashCommand | XernerxContextCommand | XernerxMessageCommand)[];
21
- commandsList(): Collection<string, object>;
10
+ hasVoted: Function;
11
+ constructor(client: XernerxClient);
12
+ setPresence(options: PresenceOptions): import("discord.js").ClientPresence | undefined;
13
+ private resolveCooldown;
14
+ resolveCommand(options: ResolveCommandOptions): Promise<XernerxSlashCommand | XernerxContextCommand | XernerxMessageCommand | Collection<string, XernerxSlashCommand | XernerxContextCommand | XernerxMessageCommand>>;
15
+ resolveChannel(query: string | Record<string, string>): Promise<import("discord.js").Channel | null>;
16
+ resolveGuild(query: string | Record<string, string>): Promise<import("discord.js").Guild | null>;
17
+ uptime(timestamp?: number | null): string;
18
+ commands(): (XernerxSlashCommand | XernerxContextCommand | XernerxMessageCommand)[];
19
+ commandsList(): Collection<string, object>;
22
20
  }
@@ -3,100 +3,121 @@ import { Collection } from 'discord.js';
3
3
  import setPresence from '../functions/setPresence.js';
4
4
  import Util from './Util.js';
5
5
  export default class ClientUtil extends Util {
6
- constructor(client) {
7
- super(client);
8
- this.setPresence = this.setPresence;
9
- this.resolveCooldown = this.resolveCooldown;
10
- this.resolveChannel = this.resolveChannel;
11
- this.commands = this.commands;
12
- this.resolveGuild = this.resolveGuild;
13
- this.uptime = this.uptime;
14
- }
15
- setPresence(options) {
16
- return setPresence(this.client, options);
17
- }
18
- // @ts-ignore
19
- resolveCooldown() {}
20
- async resolveCommand(options) {
21
- const interCommands = await this.client.application?.commands.fetch();
22
- const commands = [],
23
- collection = new Collection();
24
- if (options?.type == 'MessageCommand' || !options?.type) commands.push(...this.client.commands.message);
25
- if (options?.type == 'Interaction' || options?.type == 'SlashCommand' || !options?.type) commands.push(...this.client.commands.slash);
26
- if (options?.type == 'Interaction' || options?.type == 'ContextCommand' || !options?.type) commands.push(...this.client.commands.context);
27
- commands.map(([name, command]) => {
28
- command.snowflake = interCommands?.find((cmd) => command.name === cmd.name)?.id || null;
29
- collection.set(name, command);
30
- });
31
- if (options?.name) {
32
- return collection.get(options.name) || null;
33
- } else return collection;
34
- }
35
- async resolveChannel(query) {
36
- if (typeof query == 'object') query = query.id;
37
- try {
38
- let channel = this.client.channels.cache.find((channel) => (channel.name == query.toLowerCase() || channel.id == query.toLowerCase() ? channel : null)) || null;
39
- if (!channel) channel = (await this.client.channels.fetch(query)) || null;
40
- return channel;
41
- } catch {
42
- return null;
43
- }
44
- }
45
- async resolveGuild(query) {
46
- if (typeof query == 'object') query = query.id;
47
- try {
48
- let guild = this.client.guilds.cache.find((guild) => guild.name.toLowerCase() == query.toLowerCase()) || null;
49
- if (!guild) guild = (await this.client.guilds.fetch(query)) || null;
50
- return guild;
51
- } catch {
52
- return null;
53
- }
54
- }
55
- uptime(timestamp) {
56
- if (!timestamp) timestamp = this.client.uptime || 0;
57
- let totalSeconds = timestamp / 1000;
58
- let years = Math.floor(totalSeconds / 31536000);
59
- totalSeconds %= 31536000;
60
- let days = Math.floor(totalSeconds / 86400);
61
- totalSeconds %= 86400;
62
- let hours = Math.floor(totalSeconds / 3600);
63
- totalSeconds %= 3600;
64
- let minutes = Math.floor(totalSeconds / 60);
65
- let seconds = Math.floor(totalSeconds % 60);
66
- if (years >= 1) return `${years}y ${days}d ${hours}h ${minutes}m`;
67
- else if (days >= 1) return `${days}d ${hours}h ${minutes}m`;
68
- else if (hours >= 1) return `${hours}h ${minutes}m`;
69
- else if (minutes >= 1) return `${minutes}m ${seconds}s`;
70
- else return `${seconds}s`;
71
- }
72
- commands() {
73
- return [...this.client.commands.context.toJSON(), ...this.client.commands.slash.toJSON(), ...this.client.commands.message.toJSON()];
74
- }
75
- commandsList() {
76
- function set(name, type, description, usage) {
77
- return collection.set(name, { name, type, description, usage });
78
- }
79
- const commands = this.commands();
80
- const collection = new Collection();
81
- commands.map((command) => {
82
- if (command.filetype == 'MessageCommand' || command.filetype == 'ContextCommand') return set(command.name, command.filetype, command.description, command.usage);
83
- else if (command.data.options.length) {
84
- command.data.options.map((option) => {
85
- if (!option.type) {
86
- if (option.options.length) {
87
- option.options.map((o) => {
88
- if (!o.type) set(`${command.name} ${option.name} ${o.name}`, command.filetype, o.description, command.usage);
89
- else set(`${command.name} ${option.name}`, command.filetype, option.description, command.usage);
90
- });
91
- } else {
92
- set(`${command.name} ${option.name}`, command.filetype, option.description, command.usage);
93
- }
94
- }
95
- });
96
- } else {
97
- set(command.name, command.filetype, command.description, command.usage);
98
- }
99
- });
100
- return collection;
101
- }
6
+ constructor(client) {
7
+ super(client);
8
+ this.setPresence = this.setPresence;
9
+ this.resolveCooldown = this.resolveCooldown;
10
+ this.resolveChannel = this.resolveChannel;
11
+ this.commands = this.commands;
12
+ this.resolveGuild = this.resolveGuild;
13
+ this.uptime = this.uptime;
14
+ }
15
+ setPresence(options) {
16
+ return setPresence(this.client, options);
17
+ }
18
+ // @ts-ignore
19
+ resolveCooldown() { }
20
+ async resolveCommand(options) {
21
+ const interCommands = await this.client.application?.commands.fetch();
22
+ const commands = [], collection = new Collection();
23
+ if (options?.type == 'MessageCommand' || !options?.type)
24
+ commands.push(...this.client.commands.message);
25
+ if (options?.type == 'Interaction' || options?.type == 'SlashCommand' || !options?.type)
26
+ commands.push(...this.client.commands.slash);
27
+ if (options?.type == 'Interaction' || options?.type == 'ContextCommand' || !options?.type)
28
+ commands.push(...this.client.commands.context);
29
+ commands.map(([name, command]) => {
30
+ command.snowflake = interCommands?.find((cmd) => command.name === cmd.name)?.id || null;
31
+ collection.set(name, command);
32
+ });
33
+ if (options?.name) {
34
+ return collection.get(options.name) || null;
35
+ }
36
+ else
37
+ return collection;
38
+ }
39
+ async resolveChannel(query) {
40
+ if (typeof query == 'object')
41
+ query = query.id;
42
+ try {
43
+ let channel = this.client.channels.cache.find((channel) => channel.name == query.toLowerCase() || channel.id == query.toLowerCase() ? channel : null) || null;
44
+ if (!channel)
45
+ channel = (await this.client.channels.fetch(query)) || null;
46
+ return channel;
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ async resolveGuild(query) {
53
+ if (typeof query == 'object')
54
+ query = query.id;
55
+ try {
56
+ let guild = this.client.guilds.cache.find((guild) => guild.name.toLowerCase() == query.toLowerCase()) || null;
57
+ if (!guild)
58
+ guild = (await this.client.guilds.fetch(query)) || null;
59
+ return guild;
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ }
65
+ uptime(timestamp) {
66
+ if (!timestamp)
67
+ timestamp = this.client.uptime || 0;
68
+ let totalSeconds = timestamp / 1000;
69
+ let years = Math.floor(totalSeconds / 31536000);
70
+ totalSeconds %= 31536000;
71
+ let days = Math.floor(totalSeconds / 86400);
72
+ totalSeconds %= 86400;
73
+ let hours = Math.floor(totalSeconds / 3600);
74
+ totalSeconds %= 3600;
75
+ let minutes = Math.floor(totalSeconds / 60);
76
+ let seconds = Math.floor(totalSeconds % 60);
77
+ if (years >= 1)
78
+ return `${years}y ${days}d ${hours}h ${minutes}m`;
79
+ else if (days >= 1)
80
+ return `${days}d ${hours}h ${minutes}m`;
81
+ else if (hours >= 1)
82
+ return `${hours}h ${minutes}m`;
83
+ else if (minutes >= 1)
84
+ return `${minutes}m ${seconds}s`;
85
+ else
86
+ return `${seconds}s`;
87
+ }
88
+ commands() {
89
+ return [...this.client.commands.context.toJSON(), ...this.client.commands.slash.toJSON(), ...this.client.commands.message.toJSON()];
90
+ }
91
+ commandsList() {
92
+ function set(name, type, description, usage) {
93
+ return collection.set(name, { name, type, description, usage });
94
+ }
95
+ const commands = this.commands();
96
+ const collection = new Collection();
97
+ commands.map((command) => {
98
+ if (command.filetype == 'MessageCommand' || command.filetype == 'ContextCommand')
99
+ return set(command.name, command.filetype, command.description, command.usage);
100
+ else if (command.data.options.length) {
101
+ command.data.options.map((option) => {
102
+ if (!option.type) {
103
+ if (option.options.length) {
104
+ option.options.map((o) => {
105
+ if (!o.type)
106
+ set(`${command.name} ${option.name} ${o.name}`, command.filetype, o.description, command.usage);
107
+ else
108
+ set(`${command.name} ${option.name}`, command.filetype, option.description, command.usage);
109
+ });
110
+ }
111
+ else {
112
+ set(`${command.name} ${option.name}`, command.filetype, option.description, command.usage);
113
+ }
114
+ }
115
+ });
116
+ }
117
+ else {
118
+ set(command.name, command.filetype, command.description, command.usage);
119
+ }
120
+ });
121
+ return collection;
122
+ }
102
123
  }
@@ -6,20 +6,20 @@ import { PermissionNames, XernerxInteraction } from '../types/types.js';
6
6
  import Util from './Util.js';
7
7
  import { XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUser, XernerxUserContextInteraction } from '../types/extenders.js';
8
8
  type MimicOptions = {
9
- timeout: number;
9
+ timeout: number;
10
10
  };
11
11
  export default class InteractionUtil extends Util {
12
- private readonly interaction;
13
- parsed: {
14
- alias: string | null;
15
- args: (SlashCommandArguments | ContextCommandArguments<'message' | 'user'>) | null;
16
- };
17
- constructor(client: XernerxClient, interaction: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>);
18
- send(content: any): Promise<import('discord.js').Message<false> | import('discord.js').Message<true> | undefined>;
19
- reply(content: string | MessagePayload | InteractionReplyOptions | InteractionEditReplyOptions): Promise<import('discord.js').InteractionResponse<boolean> | import('discord.js').Message<boolean>>;
20
- mimic(user: XernerxUser | string, interaction: MessageCreateOptions, options: MimicOptions): Promise<void>;
21
- paginator(embeds: Array<EmbedBuilder>, options?: PaginatorOptions): Promise<void | import('discord.js').Message<false> | import('discord.js').Message<true>>;
22
- commands(): import('discord.js').Collection<string, import('../main.js').XernerxSlashCommand> | import('discord.js').Collection<string, import('../main.js').XernerxContextCommand>;
23
- permissionCheck(type: 'user' | 'client', permissions: Array<PermissionNames>, emit?: boolean): boolean | string[];
12
+ private readonly interaction;
13
+ parsed: {
14
+ alias: string | null;
15
+ args: (SlashCommandArguments | ContextCommandArguments<'message' | 'user'>) | null;
16
+ };
17
+ constructor(client: XernerxClient, interaction: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>);
18
+ send(content: any): Promise<any>;
19
+ reply(content: string | MessagePayload | InteractionReplyOptions | InteractionEditReplyOptions): Promise<import("discord.js").Message<boolean> | import("discord.js").InteractionResponse<boolean>>;
20
+ mimic(user: XernerxUser | string, interaction: MessageCreateOptions, options: MimicOptions): Promise<void>;
21
+ paginator(embeds: Array<EmbedBuilder>, options?: PaginatorOptions): Promise<any>;
22
+ commands(): import("discord.js").Collection<string, import("../main.js").XernerxSlashCommand> | import("discord.js").Collection<string, import("../main.js").XernerxContextCommand>;
23
+ permissionCheck(type: 'user' | 'client', permissions: Array<PermissionNames>, emit?: boolean): boolean | string[];
24
24
  }
25
25
  export {};