import { IGlobalFlags } from "./command-base";
import { ProjectConfig } from '@codiac.io/codiac-relay-contracts';
import { ProjectContextRepo } from '../ops/data';
import { IBetterLogger } from '@codiac.io/codiac-common/IBetterLogger';
import { IUserInputProvider } from "../ops";
/** The value provided as input that indicates
 * a user's desire to be prompted with a list from which choose the value(s),
 * instead of entering them manually or taking a default. */
export declare const PROMPT_ME_DESIGNATOR = "?";
/** Persists and retrieves memorized command arguments. */
export declare class ArgumentManager {
    protected commandName: string;
    protected projCfg: ProjectConfig | undefined;
    protected projCfgRepo: ProjectContextRepo | undefined;
    private logger;
    protected _ui: IUserInputProvider;
    constructor(commandName: string, projCfg: ProjectConfig | undefined, projCfgRepo: ProjectContextRepo | undefined, logger: IBetterLogger, _ui: IUserInputProvider);
    runWithDefaults<TArgs extends any, TFlags extends IGlobalFlags>(input: {
        flags: TFlags;
        args: TArgs;
    }, handler: (arg: TArgs, flg: TFlags) => Promise<void>): Promise<void>;
    /** Mutates the args and flags with default values. */
    protected setDefaults(args: any, flags: any): Promise<void>;
    protected memorizeCommand(commandName: string, args: any, flags: any, givenName?: string): Promise<void>;
    protected inQuotes(original: string): string;
    protected isEmpty(obj: Object): boolean;
    protected unmemorizeCommand(commandName: string, givenName?: string): Promise<void>;
}
