import { Request, Response } from 'express'; import { Registry } from 'prom-client'; import { CallEvent, CallEventWithIntegrationEntities, Config, Contact, ContactTemplate, ContactUpdate, FollowUpWithIntegrationEntities, IntegrationDefinedOptions, LabeledIntegrationEntity, LoggedIntegrationEntity, Task } from '.'; import { IntegrationEntityType } from './integration-entity.model'; import { IntegrationsEvent } from './integrations-event.model'; export interface Adapter { getToken?: (config: Config) => Promise<{ apiKey: string; }>; isValidToken?: (config: Config) => Promise; getAccountId?: (config: Config) => Promise; getContact?: (config: Config, id: string, type: IntegrationEntityType) => Promise; getContacts?: (config: Config) => Promise; streamContacts?: (config: Config) => AsyncGenerator; createContact?: (config: Config, contact: ContactTemplate) => Promise; updateContact?: (config: Config, id: string, contact: ContactUpdate) => Promise; deleteContact?: (config: Config, id: string) => Promise; /** * @deprecated handleCallEvent should be replaced by createOrUpdateCallLogForEntities */ handleCallEvent?: (config: Config, event: CallEvent) => Promise; /** * @deprecated updateCallEvent should be replaced by createOrUpdateCallLogForEntities */ updateCallEvent?: (config: Config, id: string, event: CallEvent) => Promise; createOrUpdateCallLogForEntities?: (config: Config, body: CallEventWithIntegrationEntities) => Promise; createCallLogForPhoneNumber?: (config: Config, body: CallEvent) => Promise; getCallLogMetadata?: (config: Config) => Promise; getEntity?: (providerConfig: Config, id: string, type: IntegrationEntityType) => Promise; getEntitiesForContact?: (config: Config, contactId: string) => Promise; handleConnectedEvent?: (config: Config) => Promise; handleDisconnectedEvent?: (config: Config) => Promise; getHealth?: () => Promise; getOAuth2RedirectUrl?: (req?: Request, res?: Response) => Promise; handleOAuth2Callback?: (req: Request, res?: Response) => Promise<{ apiKey: string; apiUrl: string; }>; handleWebhook?: (req: Request) => Promise; verifyWebhookRequest?: (req: Request) => Promise; getTask?: (config: Config, id: string) => Promise; createFollowUp?: (config: Config, body: FollowUpWithIntegrationEntities) => Promise; getTaskMetadata?: (config: Config) => Promise; registerMetrics?: (registry: Registry) => void; }