import { AxiosRequestConfig, AxiosResponse } from 'axios';
import { State } from '../shared/State';
export type AccessTokenResponseType = {
    access_token: string;
    id_token?: string;
    scope: string;
    token_type: string;
    expires_in: number;
};
export type TokenInfoResponseType = {
    sub: string;
    cts: string;
    auditTrackingId: string;
    subname: string;
    iss: string;
    tokenName: string;
    token_type: string;
    authGrantId: string;
    access_token: string;
    aud: string;
    nbf: number;
    grant_type: string;
    scope: string[];
    auth_time: number;
    sessionToken?: string;
    realm: string;
    exp: number;
    iat: number;
    expires_in: number;
    jti: string;
    [k: string]: string | number | string[];
};
/**
 * Perform the authorization step of the authorization code grant flow
 * @param {string} amBaseUrl access management base URL
 * @param {string} data body form data
 * @param {AxiosRequestConfig} config axios request config object
 * @param {State} state library state
 * @returns {Promise} a promise resolving to an object containing the authorization server response object
 */
export declare function authorize({ amBaseUrl, data, config, state, }: {
    amBaseUrl: string;
    data: string;
    config: AxiosRequestConfig;
    state: State;
}): Promise<AxiosResponse<any, any>>;
/**
 * Perform access token request step of the authorization code grant flow
 * @param {string} amBaseUrl access management base URL
 * @param {string} data body form data
 * @param {AxiosRequestConfig} config config axios request config object
 * @param {State} state library state
 * @returns {Promise<AccessTokenResponseType>} a promise resolving to an object containing the authorization server response object containing the access token
 */
export declare function accessToken({ amBaseUrl, postData, config, realm, state, }: {
    amBaseUrl: string;
    postData: any;
    config: AxiosRequestConfig;
    realm?: boolean;
    state: State;
}): Promise<AccessTokenResponseType>;
/**
 * Get token info
 * @param {string} amBaseUrl access management base URL
 * @param {AxiosRequestConfig} config config axios request config object
 * @param {State} state library state
 * @returns
 */
export declare function getTokenInfo({ amBaseUrl, config, state, }: {
    amBaseUrl: string;
    config: AxiosRequestConfig;
    state: State;
}): Promise<TokenInfoResponseType>;
/**
 * Perform client credentials grant flow
 * @param {string} amBaseUrl access management base URL
 * @param {string} clientId client id
 * @param {string} clientSecret client secret
 * @param {string} scope space-delimited scope list
 * @param {State} state library state
 * @returns {Promise} a promise resolving to an object containing the authorization server response object
 */
export declare function clientCredentialsGrant({ amBaseUrl, clientId, clientSecret, scope, state, }: {
    amBaseUrl: string;
    clientId: string;
    clientSecret: string;
    scope: string;
    state: State;
}): Promise<AccessTokenResponseType>;
//# sourceMappingURL=OAuth2OIDCApi.d.ts.map