import { InjectionToken, NgZone } from '@angular/core';
import { MonoTypeOperatorFunction, Observable, OperatorFunction } from 'rxjs';
import { FirebaseAppConfig, FirebaseOptions, ɵPromiseProxy } from '@angular/fire';
import { remoteConfig } from 'firebase/app';
export interface ConfigTemplate {
    [key: string]: string | number | boolean;
}
export declare const SETTINGS: InjectionToken<remoteConfig.Settings>;
export declare const DEFAULTS: InjectionToken<ConfigTemplate>;
export interface AngularFireRemoteConfig extends ɵPromiseProxy<remoteConfig.RemoteConfig> {
}
export declare class Value implements remoteConfig.Value {
    _source: remoteConfig.ValueSource;
    _value: string;
    asBoolean(): boolean;
    asString(): string;
    asNumber(): number;
    getSource(): remoteConfig.ValueSource;
    constructor(_source: remoteConfig.ValueSource, _value: string);
}
export declare class Parameter extends Value {
    key: string;
    fetchTimeMillis: number;
    constructor(key: string, fetchTimeMillis: number, source: remoteConfig.ValueSource, value: string);
}
export declare const filterRemote: () => MonoTypeOperatorFunction<Parameter | Parameter[]>;
export declare const filterFresh: (howRecentInMillis: number) => MonoTypeOperatorFunction<Parameter | Parameter[]>;
export declare class AngularFireRemoteConfig {
    private zone;
    readonly changes: Observable<Parameter>;
    readonly parameters: Observable<Parameter[]>;
    readonly numbers: Observable<{
        [key: string]: number | undefined;
    }> & {
        [key: string]: Observable<number>;
    };
    readonly booleans: Observable<{
        [key: string]: boolean | undefined;
    }> & {
        [key: string]: Observable<boolean>;
    };
    readonly strings: Observable<{
        [key: string]: string | undefined;
    }> & {
        [key: string]: Observable<string | undefined>;
    };
    constructor(options: FirebaseOptions, nameOrConfig: string | FirebaseAppConfig | null | undefined, settings: remoteConfig.Settings | null, defaultConfig: ConfigTemplate | null, zone: NgZone, platformId: Object);
}
export declare const budget: <T>(interval: number) => MonoTypeOperatorFunction<T>;
export declare function scanToObject(): OperatorFunction<Parameter, {
    [key: string]: string | undefined;
}>;
export declare function scanToObject(to: 'numbers'): OperatorFunction<Parameter, {
    [key: string]: number | undefined;
}>;
export declare function scanToObject(to: 'booleans'): OperatorFunction<Parameter, {
    [key: string]: boolean | undefined;
}>;
export declare function scanToObject(to: 'strings'): OperatorFunction<Parameter, {
    [key: string]: string | undefined;
}>;
export declare function scanToObject<T extends ConfigTemplate>(template: T): OperatorFunction<Parameter, T & {
    [key: string]: string | undefined;
}>;
export declare function mapToObject(): OperatorFunction<Parameter[], {
    [key: string]: string | undefined;
}>;
export declare function mapToObject(to: 'numbers'): OperatorFunction<Parameter[], {
    [key: string]: number | undefined;
}>;
export declare function mapToObject(to: 'booleans'): OperatorFunction<Parameter[], {
    [key: string]: boolean | undefined;
}>;
export declare function mapToObject(to: 'strings'): OperatorFunction<Parameter[], {
    [key: string]: string | undefined;
}>;
export declare function mapToObject<T extends ConfigTemplate>(template: T): OperatorFunction<Parameter[], T & {
    [key: string]: string | undefined;
}>;
