import { DownloadPermissionService } from '../routes/journeys/download-report/request-download/service.js';
import { BookmarkService } from '../routes/journeys/my-reports/bookmarks/service.js';
import { RequestedReportService } from '../routes/journeys/my-reports/requested-reports/service.js';
import { RecentlyViewedStoreService } from '../routes/journeys/my-reports/recently-viewed/service.js';
import { DefaultFilterValuesService } from '../services/defaultFilterValuesService.js';
import { ReportingService } from '../services/reportingService.js';
import { DashboardService } from '../services/dashboardService.js';
import { ProductCollectionStoreService } from '../services/productCollection/productCollectionStoreService.js';
import { MissingReportService } from '../services/missingReport/missingReportService.js';
import { ProductCollectionService } from '../services/productCollection/productCollectionService.js';
import { FeatureFlagService } from '../services/featureFlagService.js';
import SubscriptionStoreService from '../routes/journeys/my-reports/subscriptions/service.js';
import SubscriptionService from '../services/subscriptionService.js';

type Services = UserStoreServices & {
  reportingService: ReportingService
  dashboardService: DashboardService
  subscriptionService: SubscriptionService
  missingReportService: MissingReportService
  productCollectionService: ProductCollectionService
  featureFlagService: FeatureFlagService
}

interface UserStoreServices {
  downloadPermissionService: DownloadPermissionService
  requestedReportService: RequestedReportService
  recentlyViewedService: RecentlyViewedStoreService
  subscriptionStoreService: SubscriptionStoreService
  bookmarkService: BookmarkService
  defaultFilterValuesService: DefaultFilterValuesService
  productCollectionStoreService: ProductCollectionStoreService
  reportIdMigrationService: ReportIdMigrationService
}

export type { Services, UserStoreServices };
