import "reflect-metadata";
import { AtLeast } from '@codiac.io/codiac-common/contracts';
import { RootMap } from "./apis/codiac-api/contracts";
import { CommandBaseEnterprise } from "./command-base-enterprise";
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[];
    protected runAsync(): Promise<void>;
    /** Parses CLI flags into a partial candidate and returns the takeDefaults flag plus an
     *  explicit-inputs snapshot. The interaction mode (silent / echo / to-script) is determined
     *  centrally by the base class from argv — commands must NOT compute or return it here.
     *  The explicit bag contains only the flags the user actually typed (no defaults, no context
     *  enrichment) and is threaded through to the build methods so UI utilities can distinguish
     *  "user typed this" from "this came from context or a built-in default". */
    abstract captureArgs(): Promise<[
        partial: Partial<TCandidate>,
        takeDefaults: boolean,
        explicit?: Partial<TCandidate>
    ]>;
    abstract buildCandidate_silently(partial: AtLeast<TCandidate, "enterprise">, rootMap: RootMap, explicit?: Partial<TCandidate>): Promise<TCandidate | undefined>;
    abstract buildCandidate_interactively(partial: AtLeast<TCandidate, "enterprise">, rootMap: RootMap, takeDefaults: boolean, explicit?: Partial<TCandidate>): Promise<TCandidate | undefined>;
    abstract buildCommandString(candidate: TCandidate, cmd: string[]): string[];
    abstract executeTask(candidate: TCandidate): Promise<void>;
}
