import { IHttpAdapter } from 'src/interfaces/IHttpAdapter';
import { AbstractOAuth2Auth, IOAuth2Config, IOAuth2Token } from '../interfaces/auth/IOAuth2Auth';
import { NullablePartial } from '../types/x-api/shared';
export declare class OAuth2Auth extends AbstractOAuth2Auth {
    private clientId;
    private clientSecret?;
    private redirectUri?;
    private state;
    private codeVerifier;
    private scopes;
    private accessToken;
    private refreshToken;
    private tokenExpiresAt;
    constructor(config: IOAuth2Config, httpAdapter: IHttpAdapter);
    setToken(token: IOAuth2Token): this;
    getToken(): NullablePartial<IOAuth2Token>;
    generateAuthorizeUrl(codeChallenge?: string | null, codeChallengeMethod?: 'S256' | 'plain'): string;
    exchangeAuthCodeForToken(code: string): Promise<this>;
    getHeaders(): Promise<{
        Authorization: string;
    }>;
    refreshAccessToken(): Promise<this>;
    isTokenExpired(): boolean;
    private base64urlEncode;
    private generateCodeVerifier;
    private generateCodeChallenge;
    private generateState;
}
