/** * @file Argument * @module kronk/lib/Argument */ import Parseable from '#lib/parseable.abstract'; import type { ArgumentData, ArgumentInfo, ArgumentMetadata, ArgumentSyntax } from '@flex-development/kronk'; /** * A command-argument. * * The `Argument` model is used to define the expected arguments of a command. * * Argument syntax is tokenized using {@linkcode initialArgument} construct. * * @see {@linkcode Parseable} * * @class * @extends {Parseable} */ declare class Argument extends Parseable { /** * Argument metadata. * * @see {@linkcode ArgumentMetadata} * * @protected * @instance * @override * @member {ArgumentMetadata} info */ protected info: ArgumentMetadata; /** * Create a new command-argument. * * @see {@linkcode ArgumentInfo} * * @param {ArgumentInfo | string} info * Argument info or syntax */ constructor(info: ArgumentInfo | string); /** * Create a new command-argument. * * @see {@linkcode ArgumentData} * * @param {string} syntax * Argument syntax * @param {ArgumentData | null | undefined} [info] * Additional argument data */ constructor(syntax: string, info?: ArgumentData | null | undefined); /** * The argument syntax id. * * @public * @instance * * @return {string} * Argument syntax id */ get id(): string; /** * The normalized argument syntax string. * * @see {@linkcode ArgumentSyntax} * * @public * @instance * * @return {ArgumentSyntax} * Argument syntax */ get syntax(): ArgumentSyntax; /** * Get the argument as a human-readable string. * * @public * @instance * * @return {string} * String representation of `this` argument */ toString(): string; /** * Tokenize argument `syntax`. * * > 👉 **Note**: Modifies `this.info.syntax` and expects its value to be a * > trimmed string before modification. * * @see {@linkcode KronkError} * * @protected * @instance * * @return {undefined} * @throws {KronkError} * If argument `syntax` is invalid */ protected tokenizeSyntax(): undefined; } export default Argument;