import type { IRushPlugin, RushSession, RushConfiguration } from '@rushstack/rush-sdk';
import type { AzureEnvironmentName, LoginFlowType } from './AzureAuthenticationBase';
/**
 * @public
 */
export interface IAzureInteractiveAuthOptions {
    /**
     * The name of the the Azure storage account to authenticate to.
     */
    readonly storageAccountName: string;
    /**
     * The name of the container in the Azure storage account to authenticate to.
     */
    readonly storageContainerName: string;
    /**
     * The Azure environment the storage account exists in. Defaults to AzureCloud.
     */
    readonly azureEnvironment?: AzureEnvironmentName;
    /**
     * Login flow to use for interactive authentication.
     * @defaultValue 'AdoCodespacesAuth' if on GitHub Codespaces, 'InteractiveBrowser' otherwise
     */
    readonly loginFlow?: LoginFlowType;
    /**
     * If specified and a credential exists that will be valid for at least this many minutes from the time
     * of execution, no action will be taken.
     */
    readonly minimumValidityInMinutes?: number;
    /**
     * The set of Rush global commands before which credentials should be updated.
     */
    readonly globalCommands?: string[];
    /**
     * The set of Rush phased commands before which credentials should be updated.
     */
    readonly phasedCommands?: string[];
}
/**
 * This plugin is for performing interactive authentication to an arbitrary Azure blob storage account.
 * It is meant to be used for scenarios where custom commands may interact with Azure blob storage beyond
 * the scope of the build cache (for build cache, use the RushAzureStorageBuildCachePlugin).
 *
 * However, since the authentication has the same dependencies, if the repository already uses the build
 * cache plugin, the additional functionality for authentication can be provided at minimal cost.
 *
 * @public
 */
export default class RushAzureInteractieAuthPlugin implements IRushPlugin {
    private readonly _options;
    readonly pluginName: 'AzureInteractiveAuthPlugin';
    constructor(options: IAzureInteractiveAuthOptions | undefined);
    apply(rushSession: RushSession, rushConfig: RushConfiguration): void;
}
//# sourceMappingURL=RushAzureInteractiveAuthPlugin.d.ts.map