import { AtLeast } from '@codiac.io/codiac-common/contracts';
import { CabinetSelector } from '../../apis/codiac-relay/contracts';
import { AnyAllNoneEnum } from "../../relay/contracts";
import { CommandBaseExec } from '../../command-base-exec';
import { Asset, AssetVersion, CabinetClusterRoot, ClusterWithIngress, EnterpriseRoot, RootMap } from "../../apis/codiac-api/contracts";
import { InteractionModes } from "../../uilogic/config-ui-utils";
interface IEnterpriseDeployRequest extends CabinetSelector {
    asset: string;
    version: string;
    providerUserName?: string | undefined;
    providerPassword?: string | undefined;
    proprietaryAuthInput?: {
        [property: string]: any;
    } | undefined;
}
/** Type alias for just the minimum Asset properties required for specifying a deployment. */
type AssetEssentials = AtLeast<Asset, "name" | "image" | "type">;
export default class AssetDeploy extends CommandBaseExec<IEnterpriseDeployRequest> {
    static hidden: boolean;
    static description: string;
    static dependsOn: string[];
    static flags: {
        help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
        enterpriseCode: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        cabinetName: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        tag: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        tagMatch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        asset: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        providerUserName: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        providerPassword: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        "aws-session-token": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        "to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        "take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
    };
    static args: {};
    private versionsByAsset;
    captureArgs(): Promise<[Partial<IEnterpriseDeployRequest>, (InteractionModes | undefined), boolean]>;
    buildCandidate_silently(partial: AtLeast<IEnterpriseDeployRequest, "enterprise">, rootMap: RootMap): Promise<IEnterpriseDeployRequest | undefined>;
    buildCommandString(candidate: IEnterpriseDeployRequest, cmd: string[]): string[];
    executeTask(candidate: IEnterpriseDeployRequest): Promise<void>;
    buildCandidate_interactively(partial: AtLeast<IEnterpriseDeployRequest, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<IEnterpriseDeployRequest | undefined>;
    /** Returns true only if the asset is found in the given enterprise. */
    private isValidAsset;
    private getValidDefaultAsset;
    private setAsset;
    private setVersion;
    /** Case-INsensitive.  Returns true only if the version is found in the image registry. */
    private isValidAssetVersion;
    private getValidDefaultAssetVersion;
    private loadAssetVersions;
    promptForVersion(enterpriseCode: string, asset: AssetEssentials, existingVersions?: string[], versionSearch?: string): Promise<AssetVersion>;
    /** Returns array of `[ cabinet: CabinetClusterRoot, versionInCabinet: string|undefined ]` */
    protected setCabinet(rootMap: RootMap, ent: EnterpriseRoot, takeDefaults: boolean, cabFromUser: string | undefined, envFromuser: string | undefined, tagsFromUser: string[] | undefined, tagMatch: AnyAllNoneEnum | undefined, asset: string): Promise<[CabinetClusterRoot, string | undefined]>;
    private createAssetVersionEmbellisher;
    protected deriveClusterFrom(enterprise: string, environment: string, cabinet: string, rootMap: RootMap): ClusterWithIngress;
}
export {};
