import { AngularFireAuth } from '@angular/fire/compat/auth';
import firebase from 'firebase/compat/app';
import { Observable } from 'rxjs';
import { AuthContext } from './models/authContext';
import User = firebase.User;
import * as i0 from "@angular/core";
export declare class NgxFirebaseAuthService {
    private afAuth;
    /**
     * Get the current User Observable from AngularFireAuth
     * @return Observable<FirebaseUser> if the user is authenticated.
     */
    get currentUser$(): Observable<User | null>;
    /**
     * Gets the current user.
     * @return The user or null if the user is not authenticated.
     */
    get currentUser(): firebase.User | null;
    /**
     * Gets the current user id.
     * @return The user id or null if the user is not authenticated.
     */
    get currentUserId(): string;
    /**
     * Checks is the user is authenticated.
     * @return True if the user is authenticated.
     */
    get authenticated(): boolean;
    /**
     * Checks if the user email is verified.
     * @return True if the user is authorized.
     */
    get isVerified(): boolean | null;
    private authState;
    constructor(afAuth: AngularFireAuth);
    /**
     * Register the user.
     * @param context The register parameters.
     * @return The user credentials.
     */
    register(context: AuthContext): Promise<firebase.auth.UserCredential>;
    /**
     * Login the user.
     * @param context The login parameters.
     * @return The user credentials.
     */
    login(context: AuthContext): Promise<firebase.auth.UserCredential>;
    /**
     * Logs out the user and clear credentials.
     * @return void
     */
    logout(): Promise<void>;
    /**
     * Sends Email Verification e.g. after registration.
     * @return void
     */
    sendEmailVerification(): Promise<void>;
    /**
     * Sends reset password mail
     * @return void
     */
    sendPasswordResetEmail(email: string): Promise<void>;
    /**
     * Reauthenticate an user, e.g. when updating user email
     * @return return new firebase user
     */
    reauthenticateUser(password: string): Promise<firebase.User>;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxFirebaseAuthService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NgxFirebaseAuthService>;
}
