import * as i0 from '@angular/core';
import { InjectionToken, NgZone, OnDestroy, ComponentFactoryResolver } from '@angular/core';
import { ɵAngularFireSchedulers as _AngularFireSchedulers } from '@angular/fire';
import { ɵPromiseProxy as _PromiseProxy, FirebaseApp } from '@angular/fire/compat';
import firebase from 'firebase/compat/app';
import { Title } from '@angular/platform-browser';
import { Router } from '@angular/router';
import { AngularFireAuth } from '@angular/fire/compat/auth';

type Config = Record<string, any>;
declare const COLLECTION_ENABLED: InjectionToken<boolean>;
declare const APP_VERSION: InjectionToken<string>;
declare const APP_NAME: InjectionToken<string>;
declare const DEBUG_MODE: InjectionToken<boolean>;
declare const CONFIG: InjectionToken<Config>;
interface AngularFireAnalytics extends _PromiseProxy<firebase.analytics.Analytics> {
}
declare class AngularFireAnalytics {
    private measurementId;
    private analyticsInitialized;
    updateConfig(config: Config): Promise<void>;
    constructor(app: FirebaseApp, analyticsCollectionEnabled: boolean | null, providedAppVersion: string | null, providedAppName: string | null, debugModeEnabled: boolean | null, providedConfig: Config | null, platformId: Object, zone: NgZone, schedulers: _AngularFireSchedulers);
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFireAnalytics, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null, null, null]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AngularFireAnalytics>;
}

declare class UserTrackingService implements OnDestroy {
    initialized: Promise<void>;
    private disposables;
    constructor(analytics: AngularFireAnalytics, platformId: Object, auth: AngularFireAuth, zone: NgZone);
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<UserTrackingService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<UserTrackingService>;
}

declare class ScreenTrackingService implements OnDestroy {
    private disposable;
    constructor(analytics: AngularFireAnalytics, router: Router, title: Title, componentFactoryResolver: ComponentFactoryResolver, zone: NgZone, userTrackingService: UserTrackingService);
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ScreenTrackingService, [null, { optional: true; }, { optional: true; }, null, null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ScreenTrackingService>;
}

declare class AngularFireAnalyticsModule {
    constructor(analytics: AngularFireAnalytics, screenTracking: ScreenTrackingService, userTracking: UserTrackingService);
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFireAnalyticsModule, [null, { optional: true; }, { optional: true; }]>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFireAnalyticsModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AngularFireAnalyticsModule>;
}

export { APP_NAME, APP_VERSION, AngularFireAnalytics, AngularFireAnalyticsModule, COLLECTION_ENABLED, CONFIG, DEBUG_MODE, ScreenTrackingService, UserTrackingService };
export type { Config };
