import * as rxjs from 'rxjs';
import { UnaryFunction, Observable } from 'rxjs';
import * as _angular_router from '@angular/router';
import { ActivatedRouteSnapshot, RouterStateSnapshot, CanActivate, Router } from '@angular/router';
import { AngularFireAuth } from '@angular/fire/compat/auth';
import firebase from 'firebase/compat/app';
import * as i0 from '@angular/core';

type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;
type AuthPipe = UnaryFunction<Observable<firebase.User | null>, Observable<boolean | string | any[]>>;
declare const loggedIn: AuthPipe;
declare class AngularFireAuthGuard implements CanActivate {
    private router;
    private auth;
    constructor(router: Router, auth: AngularFireAuth);
    canActivate: (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Observable<boolean | _angular_router.UrlTree>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFireAuthGuard, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AngularFireAuthGuard>;
}
declare const canActivate: (pipe: AuthPipeGenerator) => {
    canActivate: (typeof AngularFireAuthGuard)[];
    data: {
        authGuardPipe: AuthPipeGenerator;
    };
};
declare const isNotAnonymous: AuthPipe;
declare const idTokenResult: rxjs.OperatorFunction<firebase.User, firebase.auth.IdTokenResult>;
declare const emailVerified: AuthPipe;
declare const customClaims: UnaryFunction<Observable<firebase.User>, Observable<any[] | {
    [key: string]: any;
}>>;
declare const hasCustomClaim: (claim: string) => AuthPipe;
declare const redirectUnauthorizedTo: (redirect: string | any[]) => AuthPipe;
declare const redirectLoggedInTo: (redirect: string | any[]) => AuthPipe;

declare class AngularFireAuthGuardModule {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFireAuthGuardModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFireAuthGuardModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AngularFireAuthGuardModule>;
}

export { AngularFireAuthGuard, AngularFireAuthGuardModule, canActivate, customClaims, emailVerified, hasCustomClaim, idTokenResult, isNotAnonymous, loggedIn, redirectLoggedInTo, redirectUnauthorizedTo };
export type { AuthPipe, AuthPipeGenerator };
