import { NeptuneClient } from './../platform-sdk-neptune'; import { LoggerContext } from './../platform-sdk-logging'; import GraphClient from '../graph/GraphClient'; import { PersisterClient } from '../persister/PersisterClient'; import { RawDataUploader } from '../persister/types'; import { IntegrationCache } from './cache/types'; import { IntegrationClientProvider, IntegrationJobKey, IntegrationLogger } from './types'; import { IntegrationClientProviderConfig, IntegrationServiceClient } from './types/clients'; /** * The standard IntegrationClientProvider used by a typical integration. */ export default abstract class AbstractIntegrationClientProvider implements IntegrationClientProvider { readonly config: IntegrationClientProviderConfig; private executing?; protected jobKey?: IntegrationJobKey; protected cache?: IntegrationCache; protected neptuneClient: NeptuneClient; protected graph: GraphClient; protected persister: PersisterClient; protected integrationService: IntegrationServiceClient; protected rawDataUploader: RawDataUploader; protected loggerContext: LoggerContext; constructor(config: IntegrationClientProviderConfig); getCache(): IntegrationCache; getClients(): { graph: GraphClient; persister: PersisterClient; integrationService: IntegrationServiceClient; rawDataUploader: RawDataUploader; }; getGraph(): GraphClient; getPersister(): PersisterClient; getIntegrationService(): IntegrationServiceClient; getRawDataUploader(): RawDataUploader; executionStarted(jobKey?: IntegrationJobKey): Promise; executionCompleted(): Promise; protected createLoggerContext(): LoggerContext; protected createNeptuneClient(): NeptuneClient; protected createGraphClient(): GraphClient; protected abstract createIntegrationCache(logger: IntegrationLogger, jobKey: IntegrationJobKey): IntegrationCache; protected abstract createPersisterClient(): PersisterClient; protected abstract createIntegrationServiceClient(): IntegrationServiceClient; protected abstract createRawDataUploader(): RawDataUploader; }