import type { IHttpRequest, IHttpResponse } from '../http'; import HttpClient from '../http'; export interface ICredentials { login: string; password: string; } export interface IAuthenticationResult { accessToken: string; refreshToken: string; } export default abstract class AuthProvider { protected http: HttpClient; abstract authenticate(credentials: ICredentials): Promise; abstract logout(): Promise; abstract authorizeRequest(req: IHttpRequest, token: string): void; abstract isRequestRecoverable(reqData: { req: IHttpRequest; res: IHttpResponse | null; }): boolean; protected abstract recoverAccessToken(refreshToken: string): Promise; private requestInterceptor; private recoverErrorHandler; private accessTokenRecoveryRequest; private tokenUpdateListeners; constructor(http?: HttpClient); waitRecoveredAccessToken(refreshToken: string): Promise; addTokensUpdateListener(fn: (res: IAuthenticationResult) => unknown): void; removeTokensUpdateListener(fn: (res: IAuthenticationResult) => unknown): void; authorizeHttpRequests(token: string | null, refreshToken?: string): void; } export declare class WrongCredentialsError extends Error { }