import { IBetterLogger } from "@codiac.io/codiac-common";
import { CloudProviderEnum } from "@codiac.io/codiac-domain";
import { UserNameTenantCode } from "@codiac.io/codiac-ops-common";
import { RelayClient as GenRelayClient } from "../../apis/codiac-relay";
import * as sdk from "../../sdk";
import { CspPrimaryCredsMeta, LogintoCloudProviderRequest } from '../../apis/codiac-relay/contracts';
import { OperationMeta } from '../../ops/entities';
import { IOutputStyler, IUserInputProvider } from '../../ops';
import { IMessagingClient } from "@codiac.io/codiac-messaging/dist/nats/client";
import { ICspAccountFilter, ICspLoginOptions } from '../../sdk';
/** Implements AuthorizationCode Flow with a popup-browser interactive login
 * for user to authenticate and provide consent.
 */
export declare class AzureInteractiveLoginConfigurator implements sdk.ILoginConfigurator {
    private opMeta;
    private genRelayClient;
    private msgClient;
    private codiacUser;
    private _ui;
    private _styler;
    private logger;
    constructor(opMeta: OperationMeta, genRelayClient: GenRelayClient, msgClient: IMessagingClient, codiacUser: UserNameTenantCode, _ui: IUserInputProvider, _styler: IOutputStyler, logger: IBetterLogger);
    get cloudProvider(): CloudProviderEnum;
    /** Performs an EXPLICIT login sequence in ALL CASES.
     * It does NOT attempt or defer to a silent authentication.
     *
     * iow:  Invoke this when the silent methods have failed. */
    promptToLogin(options?: ICspLoginOptions): Promise<[boolean, CspPrimaryCredsMeta]>;
    assembleLoginRequest(user: string | undefined, secret: string | undefined, subscriptionId: string | undefined, proprietaryInput: {
        [key: string]: any;
    }): LogintoCloudProviderRequest;
    /** Opens the the external login url in a browser window.
     * Returns at the end of the sequence.
     * Throws on any errors.
     */
    private invokeBrowserSequence;
    /** Performs an EXPLICIT logout sequence in ALL CASES.
     * It does NOT attempt or defer to a silent authentication.
     *  */
    promptToLogout(accountFilter?: ICspAccountFilter): Promise<[boolean, string]>;
    /** Opens the the external login url in a browser window.
   * Returns at the end of the sequence.
   * Throws on any errors.
   *
   * @param currentCspUserName (Required, but may be undefined) The username assocaited with any tokens or credentials we may currently have on file for the given Cloud Service Provider (CSP).  If this argument is undefined or empty, this command will NOT wait for the logout sequence to complete in the browser.
   */
    private invokeLogoutBrowserSequence;
}
