/**
 * @description Represents a color function in the Kleur library.
 * @summary The Color interface defines a function that can be called with or without arguments
 * to apply color styling to text or chain multiple color operations.
 *
 * @interface Color
 * @memberOf module:utils
 * */
export interface Color {
    /**
     * @description Applies the color to the given text.
     * @param {string | number} x - The text or number to be colored.
     * @return {string} The colored text.
     */
    (x: string | number): string;
    /**
     * @description Allows chaining of multiple color operations.
     * @return {Kleur} The Kleur instance for method chaining.
     */
    (): Kleur;
}
/**
 * @description Represents the main Kleur interface with all available color and style methods.
 * @summary The Kleur interface provides methods for applying various colors, background colors,
 * and text styles to strings in terminal output.
 *
 * @interface Kleur
 * @memberOf module:utils
 */
export interface Kleur {
    /** @description Applies black color to the text. */
    black: Color;
    /** @description Applies red color to the text. */
    red: Color;
    /** @description Applies green color to the text. */
    green: Color;
    /** @description Applies yellow color to the text. */
    yellow: Color;
    /** @description Applies blue color to the text. */
    blue: Color;
    /** @description Applies magenta color to the text. */
    magenta: Color;
    /** @description Applies cyan color to the text. */
    cyan: Color;
    /** @description Applies white color to the text. */
    white: Color;
    /** @description Applies gray color to the text. */
    gray: Color;
    /** @description Alias for gray color. */
    grey: Color;
    /** @description Applies black background to the text. */
    bgBlack: Color;
    /** @description Applies red background to the text. */
    bgRed: Color;
    /** @description Applies green background to the text. */
    bgGreen: Color;
    /** @description Applies yellow background to the text. */
    bgYellow: Color;
    /** @description Applies blue background to the text. */
    bgBlue: Color;
    /** @description Applies magenta background to the text. */
    bgMagenta: Color;
    /** @description Applies cyan background to the text. */
    bgCyan: Color;
    /** @description Applies white background to the text. */
    bgWhite: Color;
    /** @description Resets all applied styles. */
    reset: Color;
    /** @description Applies bold style to the text. */
    bold: Color;
    /** @description Applies dim (decreased intensity) style to the text. */
    dim: Color;
    /** @description Applies italic style to the text. */
    italic: Color;
    /** @description Applies underline style to the text. */
    underline: Color;
    /** @description Inverts the foreground and background colors. */
    inverse: Color;
    /** @description Hides the text (same color as background). */
    hidden: Color;
    /** @description Applies strikethrough style to the text. */
    strikethrough: Color;
}
/**
 * @description Configuration for a single command-line argument option.
 * @summary Defines the structure and behavior of a command-line option.
 * @interface ParseArgsOptionConfig
 * @property {("string" | "boolean")} type - The data type of the option.
 * @property {boolean} [multiple] - Whether the option can be specified multiple times.
 * @property {string} [short] - The short (single-character) alias for the option.
 * @property {string | boolean | string[] | boolean[]} [default] - The default value(s) for the option.
 * @memberOf module:utils
 */
export interface ParseArgsOptionConfig {
    type: "string" | "boolean";
    multiple?: boolean | undefined;
    short?: string | undefined;
    default?: string | boolean | string[] | boolean[] | undefined;
}
/**
 * @description Configuration for all command-line argument options.
 * @summary A mapping of long option names to their configurations.
 * @interface ParseArgsOptionsConfig
 * @memberOf module:utils
 */
export interface ParseArgsOptionsConfig {
    [longOption: string]: ParseArgsOptionConfig;
}
/**
 * @description Represents a parsed command-line option token.
 * @summary Can be either an option with a value or an option without a value.
 * @typedef {Object} OptionToken
 * @memberOf module:utils
 */
export type OptionToken = {
    kind: "option";
    index: number;
    name: string;
    rawName: string;
    value: string;
    inlineValue: boolean;
} | {
    kind: "option";
    index: number;
    name: string;
    rawName: string;
    value: undefined;
    inlineValue: undefined;
};
/**
 * @description Represents a parsed command-line token.
 * @summary Can be an option, a positional argument, or an option terminator.
 * @typedef {OptionToken | Object} Token
 * @memberOf module:utils
 */
export type Token = OptionToken | {
    kind: "positional";
    index: number;
    value: string;
} | {
    kind: "option-terminator";
    index: number;
};
/**
 * @description The result of parsing command-line arguments.
 * @summary Contains parsed values, positional arguments, and optionally the parsed tokens.
 * @typedef {Object} ParseArgsResult
 * @property {string | boolean | string[] | boolean[] | undefined} values - Parsed option values.
 * @property {string[]} positionals - Positional arguments.
 * @property {Token[]} [tokens] - Parsed tokens (if requested).
 * @memberOf module:utils
 */
export type ParseArgsResult = {
    values: {
        [p: string]: string | boolean | (string | boolean)[] | undefined;
    };
    positionals: string[];
    tokens?: Token[];
};
