import { IAuditable, IBetterLogger } from "@codiac.io/codiac-common";
import { AtLeast } from "@codiac.io/codiac-common/contracts";
import { UserNameTenantCode } from "@codiac.io/codiac-ops-common";
import { IOutputStyler, IUserInputProvider } from "../../ops";
import { ClusterDef, ImageRegistry, IngressDef } from "../../apis/codiac-api/contracts";
import * as api from "../../apis/codiac-api/contracts";
import * as sdk from "../../sdk";
import { RelayClient as GenRelayClient } from "../../apis/codiac-relay";
import { AwsSecretStoreDef, SecretStoreDef } from "../../relay/contracts";
import { AwsIdentity, CspPrimaryCredsMeta, LogintoCloudProviderRequest } from "../../apis/codiac-relay/contracts";
import { FileStoreDef } from "../../apis/codiac-api/contracts";
import { ClusterCaptureDef } from "../../codiac-entities/cluster-capture-def";
import { ICspLoginOptions } from "../../sdk";
export type AwsProprietaryInput = {
    sessionToken?: string | undefined;
};
/** Walks the user through the selection of an existing
 * or the declaration of a new image registry.
 */
export declare class AwsResourceConfigurator implements sdk.IFileStoreConfigurator, sdk.IRegistryConfigurator, sdk.ILoginConfigurator, sdk.ISecretStoreConfigurator, sdk.IClusterConfigurator {
    private genRelayClient;
    private codiacUser;
    private _ui;
    private _styler;
    private logger;
    constructor(genRelayClient: GenRelayClient, codiacUser: UserNameTenantCode, _ui: IUserInputProvider, _styler: IOutputStyler, logger: IBetterLogger);
    readonly cloudProvider: "aws";
    captureSecretStore(defaults?: Partial<AwsSecretStoreDef> | undefined): Promise<SecretStoreDef>;
    /** Concatenates the secret and session token into a single parseable base64 string */
    private crunchForTransport;
    promptToLogin(options?: ICspLoginOptions): Promise<[boolean, CspPrimaryCredsMeta]>;
    promptToLogout(): Promise<[boolean, string]>;
    assembleLoginRequest(userName: string | undefined, secret: string, providerAccountId?: string | undefined, proprietaryInput?: {
        [key: string]: any;
    } | undefined): LogintoCloudProviderRequest;
    /** Returns undefined for invalid creds. */
    getAwsUserInfo(accountId?: string, throwNotFound?: boolean): Promise<AwsIdentity | undefined>;
    captureImageRegistry(accountId?: string): Promise<ImageRegistry>;
    defineCluster(initial: Partial<ClusterDef>, defaults?: Partial<ClusterDef>): Promise<{
        spec: ClusterDef;
        defaults: Partial<ClusterDef>;
    }>;
    promptForNodeGroup(initial: AtLeast<ClusterDef, "name">, nodePoolName: string, defaultMaxNodes?: number): Promise<api.NodePoolDef>;
    promptForIngressSpec(current?: Partial<IngressDef>): Promise<IngressDef | undefined>;
    defineClusterCaptureParams(initial: Partial<ClusterDef>, defaults?: Partial<ClusterDef>): Promise<{
        spec: ClusterCaptureDef;
        defaults: Partial<ClusterDef>;
    }>;
    private promptForName;
    private promptForNodeSpec;
    private promptForLocation;
    /** Asks the user whether to keep the default version, and if not presents a select list. */
    private promptForK8sVersion;
    captureFileStore(accountId: string, defaults: Partial<FileStoreDef>, allowUserInteraction: boolean): Promise<FileStoreDef | undefined>;
    private promptForS3Bucket;
    protected createAuditable(): IAuditable;
}
