import type { FirebaseApp, FirebaseError } from '@firebase/app';
export type LogLevel = 'debug' | 'error' | 'silent';
export type FetchStatus = 'success' | 'failure' | 'no_fetch_yet' | 'throttled';
export type ValueSource = 'static' | 'default' | 'remote';
export interface FirebaseRemoteConfigObject {
    [key: string]: string;
}
export interface FirebaseExperimentDescription {
    experimentId: string;
    variantId: string;
    experimentStartTime: string;
    triggerTimeoutMillis: string;
    timeToLiveMillis: string;
    affectedParameterKeys?: string[];
}
export interface FetchResponse {
    status: number;
    eTag?: string;
    config?: FirebaseRemoteConfigObject;
    templateVersion?: number;
    experiments?: FirebaseExperimentDescription[];
}
export interface RemoteConfigOptions {
    templateId?: string;
    initialFetchResponse?: FetchResponse;
}
export interface Value {
    getSource(): ValueSource;
    asBoolean(): boolean;
    asNumber(): number;
    asString(): string;
}
export interface RemoteConfigSettings {
    minimumFetchIntervalMillis: number;
    fetchTimeoutMillis: number;
}
export interface ConfigUpdate {
    getUpdatedKeys(): Set<string>;
}
export interface ConfigUpdateObserver {
    next: (configUpdate: ConfigUpdate) => void;
    error: (error: FirebaseError) => void;
    complete: () => void;
}
export type Unsubscribe = () => void;
export interface CustomSignals {
    [key: string]: string | number | null;
}
export interface RemoteConfig {
    app: FirebaseApp;
    fetchTimeMillis: number;
    lastFetchStatus: FetchStatus;
    settings: RemoteConfigSettings;
    defaultConfig: {
        [key: string]: string | number | boolean;
    };
}
//# sourceMappingURL=remote-config.d.ts.map