import CredentialsProvider from '../credentials_provider';
import { Session, SessionCredentialProvider } from './session';
export type OAuthTokenUpdateCallback = (refreshToken: string, accessToken: string, accessKeyId: string, accessKeySecret: string, securityToken: string, accessTokenExpire: number, stsExpire: number) => Promise<void> | void;
declare class OAuthCredentialsProviderBuilder {
    clientId: string;
    signInUrl: string;
    refreshToken: string;
    accessToken: string;
    accessTokenExpire: number;
    connectTimeout?: number;
    readTimeout?: number;
    tokenUpdateCallback?: OAuthTokenUpdateCallback;
    withClientId(clientId: string): this;
    withSignInUrl(signInUrl: string): this;
    withRefreshToken(refreshToken: string): this;
    withAccessToken(accessToken: string): this;
    withAccessTokenExpire(accessTokenExpire: number): this;
    withConnectTimeout(connectTimeout: number): this;
    withReadTimeout(readTimeout: number): this;
    withTokenUpdateCallback(callback: OAuthTokenUpdateCallback): this;
    build(): OAuthCredentialsProvider;
}
export default class OAuthCredentialsProvider extends SessionCredentialProvider implements CredentialsProvider {
    private readonly clientId;
    private readonly signInUrl;
    private refreshToken;
    private accessToken;
    private accessTokenExpire;
    private readonly connectTimeout;
    private readonly readTimeout;
    private readonly tokenUpdateCallback?;
    private doRequest;
    static builder(): OAuthCredentialsProviderBuilder;
    constructor(builder: OAuthCredentialsProviderBuilder);
    getProviderName(): string;
    private tryRefreshOAuthToken;
    getCredentialsInternal(): Promise<Session>;
}
export {};
