import { Observable } from 'rxjs';
import { HttpService, StorageService } from '../core';
import { User } from './user.model';
import * as i0 from "@angular/core";
/**
 * Service that manages information about the current user
 *
 * @author Joshua Kissoon
 * @since 20170817
 */
export declare class CurrentUserService {
    private http;
    private storage;
    private user;
    private data;
    /**Deprecated stop using for new projects */
    private userSub;
    private isLoggedIn;
    constructor(http: HttpService, storage: StorageService);
    /**
     * Get the login status of the user.
     */
    getAuthStatus(): Observable<boolean>;
    /**
     * Update the login status of the user.
     *
     * @param val The next value of the isLoggedIn.
     */
    updateAuthStatus(val: boolean): void;
    /**
     * Returns an user if present, otherwise a empty user
     * @returns {User} user
     */
    getUser(): any;
    /**
     * @deprecated Don't use for new projects, use getUserObservable() instead
     * @returns {Observable<User>} Observable of user once changed.
     */
    watch(): Observable<any>;
    /**
     * Loads the current logged in user
     * @deprecated use getUserObservable() instead
     * @param reload whether to fetch new data from server
     * @returns {Promise<User>} promise of user
     */
    getCurrentUser(reload?: boolean): any;
    /**
     * Used to update the current user data
     * @param {any} userData data that needs to be updated to current user
     */
    updateCurrentUser(userData: any): any;
    /**
     * @param {number} id Id of role
     * @returns {boolean} true if role is present
     */
    hasRole(id: number): boolean;
    /**
    * @param {number} id Id of permission
    * @returns {boolean} true if permission is present
    */
    hasPermission(slug: string): boolean;
    /**
     * Returns the observable of user
     * @param {boolean} reload - whether to reload the entire user again
     * @returns {Observable<User>} Observable of user.
     */
    getUserObservable(reload?: boolean): Observable<User>;
    /**
     * @returns {any} Returns the raw user data
     */
    getUserData(): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<CurrentUserService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CurrentUserService>;
}
