import firebase from '@firebase/app-compat';
import { Component } from '@firebase/component';
import { activate, ensureInitialized, fetchConfig, fetchAndActivate, getAll, getBoolean, getNumber, getString, getValue, setLogLevel, isSupported } from '@firebase/remote-config';

/**
 * @license
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
class RemoteConfigCompatImpl {
    constructor(app, _delegate) {
        this.app = app;
        this._delegate = _delegate;
    }
    get defaultConfig() {
        return this._delegate.defaultConfig;
    }
    set defaultConfig(value) {
        this._delegate.defaultConfig = value;
    }
    get fetchTimeMillis() {
        return this._delegate.fetchTimeMillis;
    }
    get lastFetchStatus() {
        return this._delegate.lastFetchStatus;
    }
    get settings() {
        return this._delegate.settings;
    }
    set settings(value) {
        this._delegate.settings = value;
    }
    activate() {
        return activate(this._delegate);
    }
    ensureInitialized() {
        return ensureInitialized(this._delegate);
    }
    /**
     * @throws a {@link ErrorCode.FETCH_CLIENT_TIMEOUT} if the request takes longer than
     * {@link Settings.fetchTimeoutInSeconds} or
     * {@link DEFAULT_FETCH_TIMEOUT_SECONDS}.
     */
    fetch() {
        return fetchConfig(this._delegate);
    }
    fetchAndActivate() {
        return fetchAndActivate(this._delegate);
    }
    getAll() {
        return getAll(this._delegate);
    }
    getBoolean(key) {
        return getBoolean(this._delegate, key);
    }
    getNumber(key) {
        return getNumber(this._delegate, key);
    }
    getString(key) {
        return getString(this._delegate, key);
    }
    getValue(key) {
        return getValue(this._delegate, key);
    }
    // Based on packages/firestore/src/util/log.ts but not static because we need per-instance levels
    // to differentiate 2p and 3p use-cases.
    setLogLevel(logLevel) {
        setLogLevel(this._delegate, logLevel);
    }
}

const name = "@firebase/remote-config-compat";
const version = "0.2.21";

/**
 * @license
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
function registerRemoteConfigCompat(firebaseInstance) {
    firebaseInstance.INTERNAL.registerComponent(new Component('remoteConfig-compat', remoteConfigFactory, "PUBLIC" /* ComponentType.PUBLIC */)
        .setMultipleInstances(true)
        .setServiceProps({ isSupported }));
    firebaseInstance.registerVersion(name, version);
}
function remoteConfigFactory(container, { instanceIdentifier: namespace }) {
    const app = container.getProvider('app-compat').getImmediate();
    // The following call will always succeed because rc `import {...} from '@firebase/remote-config'`
    const remoteConfig = container.getProvider('remote-config').getImmediate({
        identifier: namespace
    });
    return new RemoteConfigCompatImpl(app, remoteConfig);
}
registerRemoteConfigCompat(firebase);
//# sourceMappingURL=index.esm.js.map
