import { Message, GuildMember, Interaction } from 'discord.js'; import { IDiscordBot } from '../main'; import { CommandInputContext, CommandUserInput } from './Command'; export declare enum CommandPermissionType { user = 0, role = 1, guild = 2, textchannel = 3, anytextchannel = 4, custom = 5 } export declare enum CommandPermissionFeedbackType { silent = 0, direct = 1, textchannel = 2 } export declare enum CommandPermissionGrantRevokeType { grant = 0, revoke = 1, none = 2 } export declare class CommandPermissionRequirement { permissionType: CommandPermissionType; identifier: string; deleteMessageIfFail: boolean; /** What to do when the requirement is met */ successGrantRevokeType: CommandPermissionGrantRevokeType; /** What to do when the requirement is not met */ failGrantRevokeType: CommandPermissionGrantRevokeType; /** The higher the priority, the more it takes precedence over other requirements that include or exclude. */ priority: number; customCallback: (commandInputContext: CommandInputContext, msg: Message, interaction: Interaction, guildMember: GuildMember, requirement: CommandPermissionRequirement) => Promise; constructor(permissionType?: CommandPermissionType, identifier?: string, successGrantRevokeType?: CommandPermissionGrantRevokeType); } export declare class CommandPermissionRequirementSettings { requirements: CommandPermissionRequirement[]; hasPermissionByDefault: boolean; constructor(requirements?: CommandPermissionRequirement[], hasPermissionByDefault?: boolean); } export interface ICommandPermissions { permissionRequirements: CommandPermissionRequirementSettings; permissionFailReplyType: CommandPermissionFeedbackType; getPermissionFailReplyText(commandInputContext: CommandInputContext, msg: Message, interaction: Interaction): string; setupPermissions(bot: IDiscordBot, input: CommandUserInput): Promise; } export declare enum CommandPermissionResultStatus { noPermission = 0, hasPermission = 1 } export declare class CommandPermissionResult { permissionStatus: CommandPermissionResultStatus; failedCommandRequirements: CommandPermissionRequirement[]; }