class FirebaseRemoteConfig {

  @Deprecated
  @WorkerThread
  public boolean activateFetched() {
    @Nullable ConfigContainer fetchedContainer = fetchedConfigsCache.getBlocking();
    if (fetchedContainer == null) {
      return false;
    }

    // If the activated configs exist, verify that the fetched configs are fresher.
    @Nullable ConfigContainer activatedContainer = activatedConfigsCache.getBlocking();
    if (!isFetchedFresh(fetchedContainer, activatedContainer)) {
      return false;
    }

    // Write the newly activated configs to disk, and then clear the fetched configs from disk.
    // Fire and forget call, so consistency between disk and memory is not guaranteed.
    activatedConfigsCache
        .putWithoutWaitingForDiskWrite(fetchedContainer)
        .addOnSuccessListener(
            executor,
            newlyActivatedContainer -> {
              fetchedConfigsCache.clear();
              updateAbtWithActivatedExperiments(newlyActivatedContainer.getAbtExperiments());
            });
    return true;
  }

    FirebaseRemoteConfig(
      Context context,
      FirebaseApp firebaseApp,
      FirebaseInstallationsApi firebaseInstallations,
      @Nullable FirebaseABTesting firebaseAbt,
      Executor executor,
      ConfigCacheClient fetchedConfigsCache,
      ConfigCacheClient activatedConfigsCache,
      ConfigCacheClient defaultConfigsCache,
      ConfigFetchHandler fetchHandler,
      ConfigGetParameterHandler getHandler,
      ConfigMetadataClient frcMetadata);

}