import { CloudProviderEnum } from "@codiac.io/codiac-domain";
import { CspPrimaryCredsMeta, LogintoCloudProviderRequest } from "../apis/codiac-relay/contracts";
export interface ICspLoginOptions {
    providerSubscriptionId?: string | undefined;
    suppressConfirmations?: boolean | undefined;
    providedUserName?: string | undefined;
    providedSecret?: string | undefined;
    proprietaryInput?: {
        [property: string]: any;
    } | undefined;
}
export interface ILoginConfigurator {
    get cloudProvider(): CloudProviderEnum;
    promptToLogin(options?: ICspLoginOptions): Promise<[boolean, CspPrimaryCredsMeta]>;
    promptToLogout(): Promise<[boolean, string]>;
    /** Used when cloud service provider has special proprietary input
     * required for csp login that breaks the standard patterns.
     * This method allows that provider a chance to build the login request however they see fit. */
    assembleLoginRequest(user: string | undefined, secret: string | undefined, subscriptionId: string | undefined, proprietaryInput: {
        [key: string]: any;
    }): LogintoCloudProviderRequest;
}
