class InAppMessageStreamManager {

  @VisibleForTesting
  static FetchEligibleCampaignsResponse cacheExpiringResponse() {
    // Within the cache, we use '0' as a special case to 'never' expire. '1' is used when we want to
    // retry the getFiams call on subsequent event triggers, and force the cache to always expire
    return FetchEligibleCampaignsResponse.newBuilder().setExpirationEpochTimestampMillis(1).build();
  }

  @Inject public  InAppMessageStreamManager(
      @AppForeground ConnectableFlowable<String> appForegroundEventFlowable,
      @ProgrammaticTrigger ConnectableFlowable<String> programmaticTriggerEventFlowable,
      CampaignCacheClient campaignCacheClient,
      Clock clock,
      ApiClient apiClient,
      AnalyticsEventsManager analyticsEventsManager,
      Schedulers schedulers,
      ImpressionStorageClient impressionStorageClient,
      RateLimiterClient rateLimiterClient,
      @AppForeground RateLimit appForegroundRateLimit,
      TestDeviceHelper testDeviceHelper,
      FirebaseInstallationsApi firebaseInstallations,
      DataCollectionHelper dataCollectionHelper,
      AbtIntegrationHelper abtIntegrationHelper);

}