import * as Parser from '@anycli/parser'; import { IConfig } from './config'; import { IPlugin } from './plugin'; export interface ICommandBase { _base: string; id: string; hidden: boolean; aliases: string[]; description?: string; title?: string; usage?: string | string[]; examples?: string[]; pluginName?: string; type?: string; } export interface ICachedCommand extends ICommandBase { flags: { [name: string]: ICachedFlag; }; args: ICachedArg[]; load(): Promise; } export interface IConvertToCachedOptions { id?: string; pluginName?: string; } export interface ICommand extends ICommandBase { plugin?: IPlugin; flags?: Parser.flags.Input; args?: Parser.args.Input; new (argv: string[], opts: ICommandOptions): T; run(this: ICommand, argv: string[], opts?: Partial): Promise; convertToCached(opts?: IConvertToCachedOptions): ICachedCommand; } export interface ICommandOptions { root?: string; config: IConfig; } export interface ICachedArg { name: string; description?: string; required?: boolean; hidden?: boolean; default?: string; options?: string[]; } export interface ICachedBooleanFlag { type: 'boolean'; name: string; required?: boolean; char?: string; hidden?: boolean; description?: string; } export interface ICachedOptionFlag { type: 'option'; name: string; required?: boolean; char?: string; hidden?: boolean; description?: string; helpValue?: string; default?: string; options?: string[]; } export declare type ICachedFlag = ICachedBooleanFlag | ICachedOptionFlag;