import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { AuthTokenServiceClass } from '../../interfaces/auth-token-service-class.interface';
import { SessionService } from '../../services/session/session.service';
import { SocialLoginClass } from '../../interfaces/social-login-class.interface';
import { User } from '../../models/user.model';
import { UsersHttpService } from '../../services/_http/users-http.service';
export declare class AuthService {
    usersHttp: UsersHttpService;
    session: SessionService;
    token: AuthTokenServiceClass;
    socialLogin: SocialLoginClass;
    display: any;
    informationSubject: Subject<boolean>;
    constructor(usersHttp: UsersHttpService, session: SessionService, token: AuthTokenServiceClass, socialLogin: SocialLoginClass, display: any);
    /**
     * Register a new User
     */
    register(email: string, password: string): Observable<User>;
    /**
     * Logs the User in. If success, user Profile is fetch.
     */
    login(email: string, password: string, storeToken?: boolean): Observable<User>;
    /**
     * Logs the User out
     * TESTED
     */
    logout(): void;
    /**
     * Authentification with Facebook account
     */
    facebookAuthentification(): Observable<any>;
    tryAutoLogin(): Observable<boolean>;
    /**
     * Gets own User Profile, sets Data into the application and confirms spread that user is Logged in.
     */
    private getUserProfile();
    /**
     * Check if additional infos (like username, class) are required.
     * If something is missing, we return a subject that is activated
     * when the infos are completed.
     *
     * ShowPopup allows to open additionalInfos popup.
     * We may not want to open this popup in the autologinGuard.
     *
     * @returns boolean some informations are missing or not.
     */
    private checkMissingInformations();
}
