/**
 * @fileoverview Client for Sharetribe Authentication API (OAuth2)
 *
 * @see https://www.sharetribe.com/api-reference/authentication.html
 */
import type { AxiosResponse } from "axios";
import SharetribeSdk from "../../sdk";
import IntegrationSdk from "../../integrationSdk";
import { AuthWithIdpParameter, RevokeResponse, TokenDetails, TokenRequest, TokenResponse, UserTokenRequest } from "../../types";
/**
 * Encodes object as application/x-www-form-urlencoded
 */
export declare const urlEncodeFormData: (obj: Record<string, any> | null) => string;
declare class AuthenticationApi {
    private readonly axios;
    private readonly endpoint;
    private readonly headers;
    constructor(sdk: SharetribeSdk | IntegrationSdk);
    /**
     * Request a token using any supported OAuth2 grant
     *
     * @template T - Token request type
     * @param {T} params - OAuth2 token request parameters
     * @returns {Promise<AxiosResponse<TokenResponse<T>>>}
     */
    token<T extends TokenRequest>(params: T): Promise<AxiosResponse<TokenResponse<T>>>;
    /**
     * Authenticate via external Identity Provider
     *
     * @param {AuthWithIdpParameter} params
     * @returns {Promise<AxiosResponse<TokenResponse<UserTokenRequest>>>}
     */
    authWithIdp(params: AuthWithIdpParameter): Promise<AxiosResponse<TokenResponse<UserTokenRequest>>>;
    /**
     * Revoke a refresh token
     *
     * @param {string} token - Refresh token to revoke
     */
    revoke(token: string): Promise<AxiosResponse<RevokeResponse>>;
    /**
     * Introspect current access token
     */
    details(): Promise<AxiosResponse<TokenDetails>>;
}
export default AuthenticationApi;
