/**
 * -------------------------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.
 * See License in the project root for license information.
 * -------------------------------------------------------------------------------------------
 */
import { IProvider, GraphEndpoint } from '@microsoft/mgt-element';
import { TokenCredential } from '@azure/core-auth';
/**
 * Interface represents TeamsUserCredential in TeamsFx library
 */
export interface TeamsFxUserCredential extends TokenCredential {
    login(scopes: string | string[], resources?: string[]): Promise<void>;
}
/**
 * TeamsFx Provider handler
 *
 * @export
 * @class TeamsFxProvider
 * @extends {IProvider}
 */
export declare class TeamsFxProvider extends IProvider {
    /**
     * Name used for analytics
     *
     * @readonly
     * @memberof TeamsFxProvider
     */
    get name(): string;
    /**
     * Privilege level for authentication
     *
     * Can use string array or space-separated string, such as ["User.Read", "Application.Read.All"] or "User.Read Application.Read.All"
     *
     * @type {string | string[]}
     * @memberof TeamsFxProvider
     */
    private readonly scopes;
    /**
     * TeamsFxUserCredential instance
     *
     * @type {TeamsFx}
     * @memberof TeamsFxProvider
     */
    private readonly _credential;
    /**
     * Access token provided by TeamsFx
     *
     * @type {string}
     * @memberof TeamsFxProvider
     */
    private _accessToken;
    /**
     * Constructor of TeamsFxProvider.
     *
     * @example
     * ```typescript
     * import {Providers} from '@microsoft/mgt-element';
     * import {TeamsFxProvider} from '@microsoft/mgt-teamsfx-provider';
     * import {TeamsUserCredential, TeamsUserCredentialAuthConfig} from "@microsoft/teamsfx";
     *
     * const authConfig: TeamsUserCredentialAuthConfig = {
     *     clientId: process.env.REACT_APP_CLIENT_ID,
     *     initiateLoginEndpoint: process.env.REACT_APP_START_LOGIN_PAGE_URL,
     * };
     * const scope = ["User.Read"];
     *
     * const credential = new TeamsUserCredential(authConfig);
     * const provider = new TeamsFxProvider(credential, scope);
     * Providers.globalProvider = provider;
     * ```
     *
     * @param {TeamsFxUserCredential} credential - TeamsUserCredential instance in TeamsFx library.
     * @param {string | string[]} scopes - The list of scopes for which the token will have access.
     * @param {GraphEndpoint} baseURL - Graph endpoint.
     *
     */
    constructor(credential: TeamsFxUserCredential, scopes: string | string[], baseURL?: GraphEndpoint);
    /**
     * Uses provider to receive access token via TeamsFx
     *
     * @returns {Promise<string>}
     * @memberof TeamsFxProvider
     */
    getAccessToken(): Promise<string>;
    /**
     * Performs the login using TeamsFx
     *
     * @returns {Promise<void>}
     * @memberof TeamsFxProvider
     */
    login(): Promise<void>;
    private validateScopesType;
    private getScopesArray;
}
//# sourceMappingURL=TeamsFxProvider.d.ts.map