import { AliasedMap } from '@ionic/utils-object'; import { CommandInstanceInfo, CommandLineInputs, CommandLineOptions, CommandMapGetter, CommandMetadata, CommandMetadataInput, CommandMetadataOption, CommandPathItem, HydratedCommandMetadata, HydratedNamespaceMetadata, ICommand, ICommandMap, INamespace, INamespaceMap, NamespaceLocateOptions, NamespaceLocateResult, NamespaceMapGetter, NamespaceMetadata } from '../definitions'; export declare abstract class BaseCommand, N extends INamespace, M extends CommandMetadata, I extends CommandMetadataInput, O extends CommandMetadataOption> { namespace: N; constructor(namespace: N); abstract getMetadata(): Promise; abstract run(inputs: CommandLineInputs, options: CommandLineOptions, runtime?: Partial>): Promise; validate(argv: CommandLineInputs): Promise; } export declare const CommandMapDefault: unique symbol; export declare class BaseCommandMap, N extends INamespace, M extends CommandMetadata, I extends CommandMetadataInput, O extends CommandMetadataOption> extends AliasedMap> implements ICommandMap { } export declare class BaseNamespaceMap, N extends INamespace, M extends CommandMetadata, I extends CommandMetadataInput, O extends CommandMetadataOption> extends AliasedMap> implements INamespaceMap { } export declare abstract class BaseNamespace, N extends INamespace, M extends CommandMetadata, I extends CommandMetadataInput, O extends CommandMetadataOption> implements INamespace { parent: N | undefined; constructor(parent?: N); get root(): N; abstract getMetadata(): Promise; getNamespaces(): Promise>; getCommands(): Promise>; /** * Locate commands and namespaces given a set of inputs. * * Recursively walk down the tree of namespaces available within this * namespace to find the command that we will execute or the right-most * namespace matched if the command is not found. * * The resolved object looks like this: * * { * obj: command or namespace, * args: the leftover arguments, * path: the path taken to get to the result which comprises tuples of * } * * @param argv The set of command-line arguments to use to locate. */ locate(argv: readonly string[], { useAliases }?: NamespaceLocateOptions): Promise>; /** * Get all command metadata in a flat structure. */ getCommandMetadataList(): Promise[]>; groupCommandsByNamespace(commands: readonly HydratedCommandMetadata[]): Promise & { commands: readonly HydratedCommandMetadata[]; })[]>; } export declare abstract class Command extends BaseCommand { } export declare abstract class Namespace extends BaseNamespace { } export declare class CommandMap extends BaseCommandMap { } export declare class NamespaceMap extends BaseNamespaceMap { } /** * Given a command object, backtrack through the command's namespace to compile * a list of command path items which represents how the command was * found/constructed. */ export declare function generateCommandPath, N extends INamespace, M extends CommandMetadata, I extends CommandMetadataInput, O extends CommandMetadataOption>(cmd: C): Promise[]>;