import * as i0 from '@angular/core';
import { InjectionToken, NgZone, OnDestroy, ApplicationRef } from '@angular/core';
import { ɵPromiseProxy as _PromiseProxy, FirebaseApp } from '@angular/fire/compat';
import firebase from 'firebase/compat/app';
import { Observable } from 'rxjs';

declare const INSTRUMENTATION_ENABLED: InjectionToken<boolean>;
declare const DATA_COLLECTION_ENABLED: InjectionToken<boolean>;
interface AngularFirePerformance extends _PromiseProxy<firebase.performance.Performance> {
}
declare class AngularFirePerformance {
    private zone;
    private readonly performance;
    constructor(app: FirebaseApp, instrumentationEnabled: boolean | null, dataCollectionEnabled: boolean | null, zone: NgZone, platformId: Object);
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFirePerformance, [null, { optional: true; }, { optional: true; }, null, null]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AngularFirePerformance>;
}
declare const traceUntil: <T = any>(name: string, test: (a: T) => boolean, options?: {
    orComplete?: boolean;
}) => (source$: Observable<T>) => Observable<T>;
declare const traceWhile: <T = any>(name: string, test: (a: T) => boolean, options?: {
    orComplete?: boolean;
}) => (source$: Observable<T>) => Observable<T>;
declare const traceUntilComplete: <T = any>(name: string) => (source$: Observable<T>) => Observable<T>;
declare const traceUntilFirst: <T = any>(name: string) => (source$: Observable<T>) => Observable<T>;
declare const trace: <T = any>(name: string) => (source$: Observable<T>) => Observable<T>;

declare class PerformanceMonitoringService implements OnDestroy {
    private disposable;
    constructor(appRef: ApplicationRef);
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceMonitoringService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PerformanceMonitoringService>;
}

declare class AngularFirePerformanceModule {
    constructor(perf: AngularFirePerformance, _: PerformanceMonitoringService);
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFirePerformanceModule, [null, { optional: true; }]>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFirePerformanceModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AngularFirePerformanceModule>;
}

export { AngularFirePerformance, AngularFirePerformanceModule, DATA_COLLECTION_ENABLED, INSTRUMENTATION_ENABLED, PerformanceMonitoringService, trace, traceUntil, traceUntilComplete, traceUntilFirst, traceWhile };
