import { CloudProviderEnum } from "@codiac.io/codiac-domain";
import { interfaces } from "inversify";
import { IRegistryConfigurator } from "./i-registry-configurator";
import { IClusterConfigurator } from "./i-cluster-configurator";
import { ISecretStoreConfigurator } from "./i-secret-store-configurator";
import { ILoginConfigurator } from "./i-login-configurator";
import { IFileStoreConfigurator } from "./i-file-store-configurator";
export interface ICodiacSdkForCliAdapter {
    get provider(): CloudProviderEnum;
    bootstrap(sdk: CodiacSdkForCli): void;
}
export declare class CodiacSdkForCli {
    private ioc;
    /**
     *
     * @param ioc Inversion of Control container for the system.
     *
     * DEV NOTE: *let's try to keep this private by exposing type-safe public bootstrapping methods
     * that provide explicit guidance and enable the consumer to integrate their components
     * without having to know how the system is set up internally).*
     */
    constructor(ioc: interfaces.Container);
    registerCspAdapter(constructor: new () => ICodiacSdkForCliAdapter): void;
    registerContainerRegistryConfigurator(provider: CloudProviderEnum, constructor: new (...args: any[]) => IRegistryConfigurator): void;
    registerClusterConfigurator(provider: CloudProviderEnum, constructor: new (...args: any[]) => IClusterConfigurator): void;
    registerFileStoreConfigurator(provider: CloudProviderEnum, constructor: new (...args: any[]) => IFileStoreConfigurator): void;
    registerSecretStoreConfigurator(provider: CloudProviderEnum, constructor: new (...args: any[]) => ISecretStoreConfigurator): void;
    registerLoginConfigurator(provider: CloudProviderEnum, constructor: new (...args: any[]) => ILoginConfigurator): void;
    /** Records that this cli supports the feature for the given csp. */
    private updateCspSupportMap;
}
