import "reflect-metadata";
import { AtLeast } from '@codiac.io/codiac-common/contracts';
import { RootMap } from "./apis/codiac-api/contracts";
import { CommandBaseEnterprise } from "./command-base-enterprise";
import { InteractionModes } from "./uilogic/config-ui-utils";
export interface IEnterpriseEntity {
    /** The code for the enterprise in which the entity is situated. */
    enterprise: string;
}
export declare abstract class CommandBaseExec<TCandidate extends IEnterpriseEntity> extends CommandBaseEnterprise {
    /** CLI Command-line string to rerun this execution as a non-TTY script. */
    protected cmd: string[];
    run(): Promise<void>;
    /** Applies whatever explicit command arguments
     * were provided to the partial candidate entity
     * and determines the applicable interaction mode.  */
    abstract captureArgs(): Promise<[Partial<TCandidate>, (InteractionModes | undefined), boolean]>;
    abstract buildCandidate_silently(partial: AtLeast<TCandidate, "enterprise">, rootMap: RootMap): Promise<TCandidate | undefined>;
    abstract buildCandidate_interactively(partial: AtLeast<TCandidate, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<TCandidate | undefined>;
    abstract buildCommandString(candidate: TCandidate, cmd: string[]): string[];
    abstract executeTask(candidate: TCandidate): Promise<void>;
}
