import { ServiceManager } from '../core/ServiceManager.js'
import type UserService from './UserService.js'
import type OrganizationService from './OrganizationService.js'
import type SdkService from './SdkService.js'
import type ConfigurationService from './ConfigurationService.js'
import type TransmitService from './TransmitService.js'
import type LoggingService from './LoggingService.js'
import type UserCacheService from './UserCacheService.js'
import type CacheService from './CacheService.js'

// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
export type KnownBindings = {
  config: ConfigurationService
  sdk: SdkService
  user: UserService
  userCache: UserCacheService
  org: OrganizationService
  transmit: TransmitService
  logger: LoggingService
  cache: CacheService
}

const manager = new ServiceManager<KnownBindings>()
export { manager as default }
