import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { JwtTokenBase } from './models/jwt-token-base';
import { JwtAuthConfig } from './models/jwt-auth-config';
import { MutexFastLockService } from '@devlearning/mutex-fast-lock';
import * as i0 from "@angular/core";
export declare class JwtAuthService<Token extends JwtTokenBase> {
    private readonly _config;
    private readonly _http;
    private readonly _mutexFastLock;
    private _isLoggedInSubject;
    private _isRefreshingTokenSubject;
    private _jwtTokenSubject;
    private _isLocalStorageSupported;
    private _refreshTokenSubject;
    private _storage;
    get isLoggedIn$(): Observable<boolean>;
    get jwtToken$(): Observable<Token>;
    get refreshingToken$(): Observable<boolean>;
    get isLoggedIn(): boolean;
    get jwtToken(): Token;
    constructor(_config: JwtAuthConfig, _http: HttpClient, _mutexFastLock: MutexFastLockService);
    init(): Observable<Token>;
    token(request: any): Observable<Token>;
    refreshToken(): Observable<Token>;
    logout(): void;
    isAuthenticationUrl(url: string): boolean;
    isRefreshTokenExpired(): boolean;
    isTokenExpired(): boolean;
    setTokenUrl(url: string): void;
    setRefreshUrl(url: string): void;
    private getIsRefreshingToken;
    private setRefreshingToken;
    setToken(jwtToken: Token): void;
    private _setToken;
    private _cleanToken;
    private _checkStorageIsSupported;
    private _getLocalStorageSupported;
    private _saveJwtToken;
    private _getJwtToken;
    private _deleteJwtToken;
    private _checkTokenIsExpired;
    private _handleError;
    static ɵfac: i0.ɵɵFactoryDeclaration<JwtAuthService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<JwtAuthService<any>>;
}
