export = XsaService;
/**
 * @typedef {import('../util/Types').ServiceCredentials} ServiceCredentials
 * @typedef {import('../util/Types').XsaServiceCredentials} XsaServiceCredentials
 * @typedef {import('../util/Types').ServiceConfig} ServiceConfig
 * @typedef {import('../util/Types').SecurityContextConfig} SecurityContextConfig
 * @typedef {import('../util/Types').TokenFetchOptions} TokenFetchOptions
 * @typedef {import('../util/Types').TokenFetchResponse} TokenFetchResponse
 * @typedef {import('../util/Types').RefreshableTokenFetchResponse} RefreshableTokenFetchResponse
 * @typedef {import('../util/Types').GrantType} GrantType
 */
/**
 * New SAP BTP applications should start with SAP Identity Services instead of XSA! See README for details.\
 * This {@link Service} class is constructed from XSA credentials to provide an API with selected functionality against that XSA service instance, e.g. token validation and token fetches.
 */
declare class XsaService extends XsuaaService {
    /**
     * @param {ServiceCredentials & XsaServiceCredentials} credentials
     * @param {ServiceConfig} [serviceConfig={}]
     */
    constructor(credentials: ServiceCredentials & XsaServiceCredentials, serviceConfig?: ServiceConfig);
    /**
     * @override
     * @param {String|XsaToken} token token as JWT or XsaToken object
     * @param {SecurityContextConfig} contextConfig
     * @returns {Promise<XsaSecurityContext>}
     */
    override createSecurityContext(token: string | XsaToken, contextConfig?: SecurityContextConfig): Promise<XsaSecurityContext>;
    validateTokenSignature(token: any, contextConfig: any): Promise<void>;
    /**
     * Fetches a token from this service with this service's client credentials.
     * @param {TokenFetchOptions} options
     * @returns {Promise<TokenFetchResponse>} response
     */
    fetchClientCredentialsToken(options?: TokenFetchOptions): Promise<TokenFetchResponse>;
    /**
     * Fetches a user token from this service with the given username and password.
     * @param {String} username
     * @param {String} password
     * @param {TokenFetchOptions} options
     * @returns {Promise<TokenFetchResponse & RefreshableTokenFetchResponse>} response
     */
    fetchPasswordToken(username: string, password: string, options?: TokenFetchOptions): Promise<TokenFetchResponse & RefreshableTokenFetchResponse>;
    /**
     * Fetches a JWT bearer token from this service with the given user token as assertion.
     * @param {String} assertion JWT bearer token used as assertion
     * @param {TokenFetchOptions} options
     * @returns {Promise<TokenFetchResponse & RefreshableTokenFetchResponse>} response
     */
    fetchJwtBearerToken(assertion: string, options?: TokenFetchOptions): Promise<TokenFetchResponse & RefreshableTokenFetchResponse>;
    /**
     * Determines the URL that can be used for fetching tokens from this service.
     * @param {GrantType} grant_type
     */
    getTokenUrl(grant_type: GrantType): Promise<URL>;
    #private;
}
declare namespace XsaService {
    export { ServiceCredentials, XsaServiceCredentials, ServiceConfig, SecurityContextConfig, TokenFetchOptions, TokenFetchResponse, RefreshableTokenFetchResponse, GrantType };
}
import XsuaaService = require("./XsuaaService");
import XsaToken = require("../token/XsaToken");
import XsaSecurityContext = require("../context/XsaSecurityContext");
type ServiceCredentials = import("../util/Types").ServiceCredentials;
type XsaServiceCredentials = import("../util/Types").XsaServiceCredentials;
type ServiceConfig = import("../util/Types").ServiceConfig;
type SecurityContextConfig = import("../util/Types").SecurityContextConfig;
type TokenFetchOptions = import("../util/Types").TokenFetchOptions;
type TokenFetchResponse = import("../util/Types").TokenFetchResponse;
type RefreshableTokenFetchResponse = import("../util/Types").RefreshableTokenFetchResponse;
type GrantType = import("../util/Types").GrantType;
//# sourceMappingURL=XsaService.d.ts.map