import { IAuditable, IBetterLogger } from "@codiac.io/codiac-common";
import { UserNameTenantCode } from "@codiac.io/codiac-ops-common";
import { RelayClient as GenRelayClient } from "../../apis/codiac-relay";
import { IOutputStyler, IUserInputProvider } from "../../ops";
import { CloudProviderEnum, ClusterDef, IngressDef, RootMap } from "../../apis/codiac-api/contracts";
import { IClusterConfigurator } from "../../sdk";
import { ClusterCaptureDef } from "../../codiac-entities/cluster-capture-def";
export declare abstract class ResourceConfiguratorBase implements IClusterConfigurator {
    protected codiacUser: UserNameTenantCode;
    protected genRelayClient: GenRelayClient;
    protected _ui: IUserInputProvider;
    protected _styler: IOutputStyler;
    protected logger: IBetterLogger;
    constructor(codiacUser: UserNameTenantCode, genRelayClient: GenRelayClient, _ui: IUserInputProvider, _styler: IOutputStyler, logger: IBetterLogger);
    abstract get cloudProvider(): CloudProviderEnum;
    abstract defineCluster(workingModel: Partial<ClusterDef>, defaults?: Partial<ClusterDef> | undefined, cspTenantId?: string): Promise<{
        spec: ClusterDef;
        defaults: Partial<ClusterDef>;
    }>;
    abstract defineClusterCaptureParams(initial: Partial<ClusterDef>, rootMap: RootMap, defaults?: Partial<ClusterDef> | undefined): Promise<{
        spec: ClusterCaptureDef;
        defaults: Partial<ClusterDef>;
    }>;
    abstract promptForIngressSpec(current?: Partial<IngressDef> | undefined): Promise<IngressDef | undefined>;
    /** Applies defaults for this CSP */
    protected applyClusterDefaults(workingModel: Partial<ClusterDef>, initial: Partial<ClusterDef>, defaults?: Partial<ClusterDef> | undefined): Promise<[Partial<ClusterDef>, Partial<ClusterDef>]>;
    protected promptForName(current?: string | undefined): Promise<string>;
    /** Asks the user whether to keep the default version, and if not presents a select list. */
    protected promptForK8sVersion(location: string, providerSubscription: string, defaultK8sVersion?: string): Promise<string>;
    protected createAuditable(): IAuditable;
}
