import { Channel, Emoji, Guild, GuildMember, Message, Snowflake, User } from 'discord.js'; import { TextChannelLike } from '../types'; import { Command } from './commands'; import { ArgumentContext } from './contexts'; import { Event } from './Event'; declare type ArgumentValidator = (argument: string, ctx: ArgumentContext) => boolean; declare type ArgumentParser = (argument: string, ctx: ArgumentContext) => T | null | Promise; export declare type ArgumentFunction = (options: ArgumentBuilder) => Argument; export declare class Argument { type: ArgumentType; options: ArgumentOptions; validator: ArgumentValidator; parser: ArgumentParser; constructor(type: ArgumentType, options: ArgumentOptions, validator: ArgumentValidator, parser: ArgumentParser); } export declare class CommandArgument { name: string; index: number; coalescing: boolean; defaultValue: T | undefined; description: string; optional: boolean; parse: ArgumentParser; type: ArgumentType; validate: ArgumentValidator; constructor(name: string, index: number, argument: Argument); get isSimple(): boolean; } export declare function booleanArgument(options?: ArgumentBuilder): Argument; export declare function channelArgument(options?: ArgumentBuilder): Argument; export declare function choiceArgument(options: ArgumentBuilder & { values: string[]; }): Argument; export declare function commandArg(options?: ArgumentBuilder): Argument; export declare function emojiArgument(options?: ArgumentBuilder): Argument; export declare function enumArgument, V>(options: ArgumentBuilder & { values: E; }): Argument; export declare function eventArgument(options?: ArgumentBuilder): Argument; export declare function floatArgument(options?: ArgumentBuilder): Argument; export declare function guildArgument(options?: ArgumentBuilder): Argument; export declare function guildMemberArgument(options?: ArgumentBuilder): Argument; export declare function intArgument(options?: ArgumentBuilder): Argument; export declare function messageArgument(options?: ArgumentBuilder): Argument; export declare function snowflakeArgument(options?: ArgumentBuilder): Argument; export declare function stringArgument(options?: ArgumentBuilder & { regex?: RegExp; }): Argument; export declare function regexArgument(options?: ArgumentBuilder): Argument; export declare function textChannelArgument(options?: ArgumentBuilder): Argument; export declare function userArgument(options?: ArgumentBuilder): Argument; interface ArgumentOptions { coalescing?: boolean; defaultValue?: T; description?: string; optional?: boolean; } declare type ArgumentBuilder = { description?: string; coalescing?: boolean; } | { description?: string; defaultValue?: T; } | { description?: string; optional?: boolean; }; export declare enum ArgumentType { BOOLEAN = "boolean", CHANNEL = "channel", COMMAND = "command", CHOICE = "choice", EMOJI = "emoji", ENUM = "enum", EVENT = "event", FLOAT = "float", GUILD = "guild", GUILD_MEMBER = "guild_member", INTEGER = "integer", MESSAGE = "message", REGEX = "regex", ROLE = "role", SNOWFLAKE = "snowflake", STRING = "string", TEXT_CHANNEL = "text_channel", USER = "user" } export {};