class ApiClient {

  FetchEligibleCampaignsResponse getFiams(
      InstallationIdResult installationIdResult, CampaignImpressionList impressionList) {
    Logging.logi(FETCHING_CAMPAIGN_MESSAGE);
    providerInstaller.install();

    return withCacheExpirationSafeguards(
        grpcClient
            .get()
            .fetchEligibleCampaigns(
                FetchEligibleCampaignsRequest.newBuilder()
                    // The project Id we expect is the gcm sender id
                    .setProjectNumber(firebaseApp.getOptions().getGcmSenderId())
                    .addAllAlreadySeenCampaigns(impressionList.getAlreadySeenCampaignsList())
                    .setClientSignals(getClientSignals())
                    .setRequestingClientApp(getClientAppInfo(installationIdResult))
                    .build()));
  }

  public  ApiClient(
      Lazy<GrpcClient> grpcClient,
      FirebaseApp firebaseApp,
      Application application,
      Clock clock,
      ProviderInstaller providerInstaller);

}