import * as rxjs from 'rxjs';
import { FirebasePerformance, getPerformance as getPerformance$1, initializePerformance as initializePerformance$1, trace as trace$1 } from 'firebase/performance';
export * from 'firebase/performance';
import * as i0 from '@angular/core';
import { Injector, EnvironmentProviders } from '@angular/core';

interface Performance extends FirebasePerformance {
}
declare class Performance {
    constructor(performance: FirebasePerformance);
}
interface PerformanceInstances extends Array<FirebasePerformance> {
}
declare class PerformanceInstances {
    constructor();
}
declare const performanceInstance$: rxjs.Observable<FirebasePerformance>;

declare class PerformanceModule {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PerformanceModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PerformanceModule>;
}
declare function providePerformance(fn: (injector: Injector) => FirebasePerformance, ...deps: any[]): EnvironmentProviders;

declare const traceUntil: <T = any>(name: string, test: (a: T) => boolean, options?: {
    orComplete?: boolean;
}) => (source$: rxjs.Observable<T>) => rxjs.Observable<T>;
declare const traceUntilComplete: <T = any>(name: string) => (source$: rxjs.Observable<T>) => rxjs.Observable<T>;
declare const traceUntilFirst: <T = any>(name: string) => (source$: rxjs.Observable<T>) => rxjs.Observable<T>;
declare const traceWhile: <T = any>(name: string, test: (a: T) => boolean, options?: {
    orComplete?: boolean;
}) => (source$: rxjs.Observable<T>) => rxjs.Observable<T>;

declare const getPerformance: typeof getPerformance$1;
declare const initializePerformance: typeof initializePerformance$1;
declare const trace: typeof trace$1;

export { Performance, PerformanceInstances, PerformanceModule, getPerformance, initializePerformance, performanceInstance$, providePerformance, trace, traceUntil, traceUntilComplete, traceUntilFirst, traceWhile };
